alchemy_cms 4.1.2 → 4.2.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/Bug_report.md +0 -5
  3. data/.rubocop.yml +4 -1
  4. data/.travis.yml +3 -3
  5. data/CHANGELOG.md +29 -10
  6. data/Gemfile +5 -7
  7. data/README.md +114 -62
  8. data/Rakefile +2 -2
  9. data/alchemy_cms.gemspec +5 -5
  10. data/app/assets/images/alchemy/icon.svg +1 -1
  11. data/app/assets/javascripts/alchemy/admin.js +2 -0
  12. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -24
  13. data/app/assets/javascripts/alchemy/alchemy.datepicker.js.coffee +11 -9
  14. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +7 -24
  15. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +9 -8
  16. data/app/assets/javascripts/alchemy/alchemy.fixed_elements.js +38 -0
  17. data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +2 -4
  18. data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +1 -1
  19. data/app/assets/stylesheets/alchemy/_mixins.scss +2 -1
  20. data/app/assets/stylesheets/alchemy/_variables.scss +7 -2
  21. data/app/assets/stylesheets/alchemy/admin.scss +2 -1
  22. data/app/assets/stylesheets/alchemy/archive.scss +18 -4
  23. data/app/assets/stylesheets/alchemy/buttons.scss +1 -1
  24. data/app/assets/stylesheets/alchemy/dialogs.scss +1 -1
  25. data/app/assets/stylesheets/alchemy/elements.scss +154 -90
  26. data/app/assets/stylesheets/alchemy/filter_field.scss +30 -0
  27. data/app/assets/stylesheets/alchemy/flatpickr.scss +839 -0
  28. data/app/assets/stylesheets/alchemy/forms.scss +5 -1
  29. data/app/assets/stylesheets/alchemy/frame.scss +6 -14
  30. data/app/assets/stylesheets/alchemy/navigation.scss +109 -98
  31. data/app/assets/stylesheets/alchemy/search.scss +11 -29
  32. data/app/assets/stylesheets/alchemy/tables.scss +0 -23
  33. data/app/assets/stylesheets/alchemy/tags.scss +4 -27
  34. data/app/assets/stylesheets/alchemy/toolbar.scss +12 -2
  35. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +4 -33
  36. data/app/controllers/alchemy/admin/attachments_controller.rb +1 -12
  37. data/app/controllers/alchemy/admin/contents_controller.rb +2 -24
  38. data/app/controllers/alchemy/admin/elements_controller.rb +11 -49
  39. data/app/controllers/alchemy/admin/pages_controller.rb +1 -1
  40. data/app/controllers/alchemy/admin/pictures_controller.rb +1 -14
  41. data/app/controllers/alchemy/api/contents_controller.rb +1 -1
  42. data/app/controllers/alchemy/api/elements_controller.rb +1 -1
  43. data/app/controllers/alchemy/api/pages_controller.rb +1 -1
  44. data/app/controllers/concerns/alchemy/admin/archive_overlay.rb +20 -0
  45. data/app/helpers/alchemy/admin/base_helper.rb +8 -18
  46. data/app/helpers/alchemy/admin/elements_helper.rb +55 -85
  47. data/app/helpers/alchemy/admin/pictures_helper.rb +0 -23
  48. data/app/helpers/alchemy/elements_helper.rb +80 -120
  49. data/app/helpers/alchemy/pages_helper.rb +5 -24
  50. data/app/models/alchemy/content.rb +0 -1
  51. data/app/models/alchemy/content/factory.rb +33 -57
  52. data/app/models/alchemy/element.rb +46 -66
  53. data/app/models/alchemy/element/element_contents.rb +2 -2
  54. data/app/models/alchemy/page.rb +34 -4
  55. data/app/models/alchemy/page/page_elements.rb +30 -122
  56. data/app/serializers/alchemy/attachment_serializer.rb +0 -2
  57. data/app/serializers/alchemy/content_serializer.rb +0 -2
  58. data/app/serializers/alchemy/element_serializer.rb +0 -3
  59. data/app/serializers/alchemy/essence_boolean_serializer.rb +0 -2
  60. data/app/serializers/alchemy/essence_date_serializer.rb +0 -2
  61. data/app/serializers/alchemy/essence_file_serializer.rb +0 -2
  62. data/app/serializers/alchemy/essence_html_serializer.rb +0 -2
  63. data/app/serializers/alchemy/essence_link_serializer.rb +0 -2
  64. data/app/serializers/alchemy/essence_picture_serializer.rb +0 -2
  65. data/app/serializers/alchemy/essence_richtext_serializer.rb +0 -2
  66. data/app/serializers/alchemy/essence_select_serializer.rb +0 -2
  67. data/app/serializers/alchemy/essence_text_serializer.rb +0 -2
  68. data/app/serializers/alchemy/legacy_element_serializer.rb +0 -3
  69. data/app/serializers/alchemy/page_serializer.rb +2 -8
  70. data/app/serializers/alchemy/page_tree_serializer.rb +1 -1
  71. data/app/serializers/alchemy/picture_serializer.rb +0 -2
  72. data/app/views/alchemy/admin/clipboard/index.html.erb +2 -2
  73. data/app/views/alchemy/admin/clipboard/insert.js.erb +9 -12
  74. data/app/views/alchemy/admin/contents/create.js.erb +4 -30
  75. data/app/views/alchemy/admin/elements/_element.html.erb +27 -12
  76. data/app/views/alchemy/admin/elements/_element_toolbar.html.erb +1 -1
  77. data/app/views/alchemy/admin/elements/_new_element_form.html.erb +0 -10
  78. data/app/views/alchemy/admin/elements/create.js.erb +12 -12
  79. data/app/views/alchemy/admin/elements/fold.js.erb +1 -1
  80. data/app/views/alchemy/admin/elements/index.html.erb +20 -19
  81. data/app/views/alchemy/admin/elements/publish.js.erb +5 -0
  82. data/app/views/alchemy/admin/elements/trash.js.erb +4 -1
  83. data/app/views/alchemy/admin/essence_pictures/assign.js.erb +0 -7
  84. data/app/views/alchemy/admin/essence_pictures/destroy.js.erb +0 -22
  85. data/app/views/alchemy/admin/pages/_publication_fields.html.erb +2 -4
  86. data/app/views/alchemy/admin/pages/edit.html.erb +1 -1
  87. data/app/views/alchemy/admin/pages/index.html.erb +14 -10
  88. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +1 -1
  89. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +1 -1
  90. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +7 -5
  91. data/app/views/alchemy/admin/partials/_routes.html.erb +0 -1
  92. data/app/views/alchemy/admin/partials/_search_form.html.erb +6 -4
  93. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +6 -3
  94. data/app/views/alchemy/admin/pictures/index.html.erb +1 -1
  95. data/app/views/alchemy/admin/trash/index.html.erb +8 -7
  96. data/app/views/alchemy/elements/_editor_not_found.html.erb +1 -1
  97. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +4 -19
  98. data/app/views/layouts/alchemy/admin.html.erb +1 -0
  99. data/bin/rspec +0 -5
  100. data/config/alchemy/config.yml +3 -0
  101. data/config/brakeman.ignore +1 -1
  102. data/config/locales/alchemy.en.yml +6 -12
  103. data/config/routes.rb +1 -5
  104. data/db/migrate/20180226123013_alchemy_four_point_zero.rb +0 -29
  105. data/db/migrate/20180519204655_add_fixed_to_alchemy_elements.rb +6 -0
  106. data/lib/alchemy/admin/locale.rb +1 -1
  107. data/lib/alchemy/cache_digests/template_tracker.rb +4 -27
  108. data/lib/alchemy/elements_finder.rb +111 -0
  109. data/lib/alchemy/errors.rb +0 -4
  110. data/lib/alchemy/modules.rb +49 -18
  111. data/lib/alchemy/tasks/tidy.rb +3 -40
  112. data/lib/alchemy/test_support/controller_requests.rb +1 -1
  113. data/lib/alchemy/test_support/essence_shared_examples.rb +1 -1
  114. data/lib/alchemy/test_support/factories/attachment_factory.rb +5 -3
  115. data/lib/alchemy/test_support/factories/content_factory.rb +4 -4
  116. data/lib/alchemy/test_support/factories/dummy_user_factory.rb +5 -5
  117. data/lib/alchemy/test_support/factories/element_factory.rb +12 -7
  118. data/lib/alchemy/test_support/factories/essence_text_factory.rb +1 -1
  119. data/lib/alchemy/test_support/factories/language_factory.rb +13 -13
  120. data/lib/alchemy/test_support/factories/page_factory.rb +18 -17
  121. data/lib/alchemy/test_support/factories/picture_factory.rb +6 -4
  122. data/lib/alchemy/test_support/factories/site_factory.rb +6 -6
  123. data/lib/alchemy/tinymce.rb +1 -1
  124. data/lib/alchemy/upgrader/four_point_two.rb +68 -0
  125. data/lib/alchemy/upgrader/tasks/cells_migration.rb +41 -0
  126. data/lib/alchemy/upgrader/tasks/cells_upgrader.rb +146 -0
  127. data/lib/alchemy/upgrader/tasks/picture_gallery_migration.rb +65 -0
  128. data/lib/alchemy/upgrader/tasks/picture_gallery_upgrader.rb +195 -0
  129. data/lib/alchemy/version.rb +1 -1
  130. data/lib/alchemy_cms.rb +1 -0
  131. data/lib/rails/generators/alchemy/elements/elements_generator.rb +1 -0
  132. data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +0 -3
  133. data/lib/rails/generators/alchemy/elements/templates/editor.html.haml +0 -3
  134. data/lib/rails/generators/alchemy/elements/templates/editor.html.slim +0 -3
  135. data/lib/rails/generators/alchemy/elements/templates/view.html.erb +3 -14
  136. data/lib/rails/generators/alchemy/elements/templates/view.html.haml +3 -10
  137. data/lib/rails/generators/alchemy/elements/templates/view.html.slim +3 -10
  138. data/lib/tasks/alchemy/tidy.rake +1 -23
  139. data/lib/tasks/alchemy/upgrade.rake +44 -1
  140. data/vendor/assets/javascripts/flatpickr/flatpickr.min.js +2 -0
  141. data/vendor/assets/javascripts/tinymce/license.txt +0 -0
  142. data/vendor/assets/javascripts/tinymce/tinymce.min.js +2 -2
  143. metadata +25 -31
  144. data/app/assets/stylesheets/alchemy/jquery.datetimepicker.scss +0 -478
  145. data/app/models/alchemy/cell.rb +0 -95
  146. data/app/models/alchemy/page/page_cells.rb +0 -69
  147. data/app/serializers/alchemy/cell_serializer.rb +0 -19
  148. data/app/views/alchemy/admin/contents/new.html.erb +0 -11
  149. data/app/views/alchemy/admin/contents/order.js.erb +0 -3
  150. data/app/views/alchemy/admin/elements/_add_picture.html.erb +0 -14
  151. data/app/views/alchemy/admin/elements/_picture_gallery_editor.html.erb +0 -24
  152. data/bin/spring +0 -16
  153. data/lib/alchemy/test_support/factories/cell_factory.rb +0 -9
  154. data/vendor/assets/javascripts/date-formatter.js +0 -161
  155. data/vendor/assets/javascripts/jquery_plugins/jquery.datetimepicker.full.min.js +0 -2
@@ -1,95 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # == Schema Information
4
- #
5
- # Table name: alchemy_cells
6
- #
7
- # id :integer not null, primary key
8
- # page_id :integer not null
9
- # name :string
10
- # created_at :datetime not null
11
- # updated_at :datetime not null
12
- #
13
-
14
- # A cell is a group of elements that are rendered inside a specific area on your page_layout.
15
- # Think of it like a column, or section in your layout. I.e. a header or right column.
16
- #
17
- # Elements are displayed in tabs inside the elements window in page edit view.
18
- # Every cell is a list of elements with the position scoped to +cell_id+ and +page_id+.
19
- #
20
- # Define cells inside a +cells.yml+ file located in the +config/alchemy+ folder of your project.
21
- #
22
- # Render cells with the +render_cell+ helper
23
- #
24
- # Views for cells are inside the +app/views/cells+ folder in your project.
25
- #
26
- module Alchemy
27
- class Cell < BaseRecord
28
- include Alchemy::Logger
29
-
30
- belongs_to :page, inverse_of: :cells
31
- validates_uniqueness_of :name, scope: 'page_id'
32
- validates_format_of :name, with: /\A[a-z0-9_-]+\z/
33
- has_many :elements, -> { where(parent_element_id: nil).order(:position) }, dependent: :destroy
34
-
35
- class << self
36
- def definitions
37
- @definitions ||= read_yml_file
38
- end
39
-
40
- def definition_for(cellname)
41
- return nil if cellname.blank?
42
- definitions.detect { |c| c['name'] == cellname }
43
- end
44
-
45
- def all_definitions_for(cellnames)
46
- definitions.select { |c| cellnames.include? c['name'] }
47
- end
48
-
49
- def definitions_for_element(element_name)
50
- return [] if definitions.blank?
51
- definitions.select { |d| d['elements'].include?(element_name) }
52
- end
53
-
54
- def translated_label_for(cell_name)
55
- Alchemy.t(cell_name, scope: 'cell_names', default: cell_name.to_s.humanize)
56
- end
57
-
58
- private
59
-
60
- def read_yml_file
61
- ::YAML.safe_load(ERB.new(File.read(yml_file_path)).result, YAML_WHITELIST_CLASSES, [], true) || []
62
- end
63
-
64
- def yml_file_path
65
- Rails.root.join('config', 'alchemy', 'cells.yml')
66
- end
67
- end
68
-
69
- def to_partial_path
70
- "alchemy/cells/#{name}"
71
- end
72
-
73
- # Returns the cell definition defined in +config/alchemy/cells.yml+
74
- #
75
- def definition
76
- definition = self.class.definition_for(name)
77
- if definition.blank?
78
- log_warning "Could not find cell definition for #{name}. Please check your cells.yml!"
79
- return {}
80
- else
81
- definition
82
- end
83
- end
84
-
85
- # Returns all elements that can be placed in this cell
86
- def element_definitions
87
- definition['elements'] || []
88
- end
89
- alias_method :available_elements, :element_definitions
90
-
91
- def name_for_label
92
- self.class.translated_label_for(name)
93
- end
94
- end
95
- end
@@ -1,69 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Alchemy
4
- module Page::PageCells
5
- extend ActiveSupport::Concern
6
-
7
- included do
8
- has_many :cells, dependent: :destroy
9
- after_create :create_cells, if: :can_have_cells?, unless: :systempage?
10
- end
11
-
12
- module ClassMethods
13
- # Copy page cells
14
- #
15
- # @param source [Alchemy::Page]
16
- # @param target [Alchemy::Page]
17
- # @return [Array]
18
- #
19
- def copy_cells(source, target)
20
- new_cells = []
21
- source.cells.each do |cell|
22
- new_cells << Cell.create(name: cell.name, page_id: target.id)
23
- end
24
- new_cells
25
- end
26
- end
27
-
28
- # Returns true, if the page's definition defines cells.
29
- def can_have_cells?
30
- definition['cells'].present?
31
- end
32
-
33
- # Returns true, if the page has cells.
34
- def has_cells?
35
- cells.any?
36
- end
37
-
38
- # Returns the cell definitions from page definition.
39
- def cell_definitions
40
- cell_names = definition['cells']
41
- return [] if cell_names.blank?
42
- Cell.all_definitions_for(cell_names)
43
- end
44
-
45
- # Returns elements grouped by cell.
46
- def elements_grouped_by_cells
47
- elements.not_trashed.in_cell.group_by(&:cell)
48
- end
49
-
50
- # Returns element names from cell definition.
51
- def element_names_from_cells
52
- cell_definitions.collect { |c| c['elements'] }.flatten.uniq
53
- end
54
-
55
- # Returns element names that are not defined in a cell.
56
- def element_names_not_in_cell
57
- definition['elements'].uniq - element_names_from_cells
58
- end
59
-
60
- private
61
-
62
- # Creates cells that are defined in page's page_layout definition.
63
- def create_cells
64
- definition['cells'].each do |cellname|
65
- cells.create!(name: cellname)
66
- end
67
- end
68
- end
69
- end
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Alchemy
4
- class CellSerializer < ActiveModel::Serializer
5
- self.root = false
6
-
7
- attributes :id,
8
- :name,
9
- :page_id,
10
- :created_at,
11
- :updated_at
12
-
13
- has_many :elements
14
-
15
- def elements
16
- object.elements.published
17
- end
18
- end
19
- end
@@ -1,11 +0,0 @@
1
- <%= alchemy_form_for [:admin, @content] do |f| %>
2
- <%= f.hidden_field :element_id %>
3
- <%= hidden_field_tag('options', options_from_params) %>
4
- <%= f.input :name, collection: @contents.map { |content|
5
- [
6
- Alchemy.t(content['name'], scope: 'content_names', default: content['name'].humanize),
7
- content['name']
8
- ]
9
- }, include_blank: false, input_html: {class: 'alchemy_selectbox'} %>
10
- <%= f.submit Alchemy.t(:create) %>
11
- <% end %>
@@ -1,3 +0,0 @@
1
- Alchemy.growl('<%= j @notice %>');
2
- Alchemy.SortableContents('#element_area .picture_gallery_images', '<%= form_authenticity_token %>');
3
- Alchemy.reloadPreview();
@@ -1,14 +0,0 @@
1
- <div class="add_picture" id="add_picture_<%= element.id %>">
2
- <%= link_to_dialog(
3
- render_icon(:plus),
4
- alchemy.admin_pictures_path(
5
- element_id: element,
6
- options: options
7
- ),
8
- {
9
- title: Alchemy.t(:add_image_to_element),
10
- size: '780x580',
11
- padding: false
12
- }
13
- ) %>
14
- </div>
@@ -1,24 +0,0 @@
1
- <% sortable = pictures.size > 1 %>
2
- <%- max_image_count = options[:maximum_amount_of_images] || options[:max_images] -%>
3
- <div class="content_editor picture_gallery_editor">
4
- <label><%= Alchemy.t("picture_gallery_editor.#{element.name}", default: Alchemy.t(:picture_gallery_editor)) %></label>
5
- <div class="picture_gallery_images" id="element_<%= element.id %>_contents">
6
- <%- pictures.each do |picture| -%>
7
- <%= render_essence_editor(picture, {sortable: sortable}.merge(options)) %>
8
- <%- end -%>
9
- <%- if max_image_count.blank? || pictures.length < max_image_count.to_i -%>
10
- <%= render(
11
- partial: 'alchemy/admin/elements/add_picture',
12
- locals: {
13
- element: element,
14
- options: options
15
- }
16
- ) %>
17
- <%- end -%>
18
- </div>
19
- </div>
20
- <%- if sortable -%>
21
- <script type="text/javascript" charset="utf-8">
22
- Alchemy.SortableContents('#element_<%= element.id %>_contents', '<%= form_authenticity_token %>');
23
- </script>
24
- <%- end -%>
data/bin/spring DELETED
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # This file loads spring without using Bundler, in order to be fast.
4
- # It gets overwritten when you run the `spring binstub` command.
5
-
6
- unless defined?(Spring)
7
- require 'rubygems'
8
- require 'bundler'
9
-
10
- lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read)
11
- if spring = lockfile.specs.detect { |spec| spec.name == "spring" }
12
- Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path
13
- gem 'spring', spring.version
14
- require 'spring/binstub'
15
- end
16
- end
@@ -1,9 +0,0 @@
1
- require 'factory_bot'
2
- require 'alchemy/test_support/factories/page_factory'
3
-
4
- FactoryBot.define do
5
- factory :alchemy_cell, class: 'Alchemy::Cell' do
6
- page { Alchemy::Page.find_by(language_root: true) || FactoryBot.create(:alchemy_page, :language_root) }
7
- name "a_cell"
8
- end
9
- end
@@ -1,161 +0,0 @@
1
- /*
2
- * Javascript Date formatter
3
- *
4
- * Copyright (C) 2010 Greg Methvin (greg@methvin.net)
5
- *
6
- * Permission is hereby granted, free of charge, to any person
7
- * obtaining a copy of this software and associated documentation
8
- * files (the "Software"), to deal in the Software without
9
- * restriction, including without limitation the rights to use, copy,
10
- * modify, merge, publish, distribute, sublicense, and/or sell copies
11
- * of the Software, and to permit persons to whom the Software is
12
- * furnished to do so, subject to the following conditions:
13
- *
14
- * The above copyright notice and this permission notice shall be
15
- * included in all copies or substantial portions of the Software.
16
- *
17
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
21
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
- * SOFTWARE.
25
- *
26
- */
27
-
28
- Date.dayNamesShort = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
29
- Date.dayNames = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
30
- Date.monthNamesShort = ['Jan','Feb','Mar','Apr','May','Jun', 'Jul','Aug','Sep','Oct','Nov','Dec'];
31
- Date.monthNames = ['January','February','March','April','May','June', 'July','August', 'September','October','November','December'];
32
-
33
- (function () {
34
- var strpad = function (n, nc, c) {
35
- nc = nc || 2;
36
- c = c || '0';
37
- n = String(Math.round(n));
38
- while (n.length < nc) {
39
- n = c + n;
40
- }
41
- return n;
42
- };
43
- var proto = Date.prototype;
44
- var formatters = Date.formatters = {
45
- A: function () {
46
- return Date.dayNames[this.getDay()];
47
- },
48
- a: function () {
49
- return Date.dayNamesShort[this.getDay()];
50
- },
51
- B: function () {
52
- return Date.monthNames[this.getMonth()];
53
- },
54
- b: function () {
55
- return Date.monthNamesShort[this.getMonth()];
56
- },
57
- C: function() {
58
- return strpad(this.getFullYear()/100);
59
- },
60
- D: proto.getDate,
61
- d: function () {
62
- return strpad(this.getDate());
63
- },
64
- e: function () {
65
- return strpad(this.getDate(), 2, ' ');
66
- },
67
- G: function () {
68
- var y = this.getFullYear();
69
- var V = parseInt(formatters.V.call(this), 10);
70
- var W = parseInt(formatters.W.call(this), 10);
71
- y -= W === 0 && V >= 52;
72
- y += W > V;
73
- return y;
74
- },
75
- g: function() {
76
- return strpad(parseInt(formatters.G.call(this) % 100, 10));
77
- },
78
- H: function () {
79
- return strpad(this.getHours());
80
- },
81
- I: function () {
82
- return strpad(formatters.l.call(this));
83
- },
84
- i: proto.getHours,
85
- j: function () {
86
- var ms = this.getTime() - new Date(String(this.getFullYear()) + '-1-1 GMT').getTime() +
87
- this.getTimezoneOffset()*60000;
88
- return strpad(ms / (60000*60*24) + 1, 3);
89
- },
90
- l: function () {
91
- return this.getHours() % 12 || 12;
92
- },
93
- M: function () {
94
- return strpad(this.getMinutes());
95
- },
96
- m: function () {
97
- return strpad(this.getMonth() + 1);
98
- },
99
- P: function () {
100
- return formatters.H.call(this) < 12 ? 'AM' : 'PM';
101
- },
102
- p: function () {
103
- return formatters.H.call(this) < 12 ? 'am' : 'pm';
104
- },
105
- S: function () {
106
- return strpad(this.getSeconds());
107
- },
108
- U: function () {
109
- return strpad((parseInt(formatters.j.call(this), 10) +
110
- 6 - this.getDay()) / 7);
111
- },
112
- u: function () {
113
- return this.getDay() || 7;
114
- },
115
- V: function () {
116
- var yr = this.getFullYear();
117
- var firstDay = (new Date(yr, 0, 1)).getDay();
118
- var isoWeek = parseInt(formatters.W.call(this), 10) + (firstDay <= 4 && firstDay > 1);
119
- if (isoWeek === 53 && (new Date(yr, 11, 31)).getDay() < 4) {
120
- isoWeek = 1;
121
- }
122
- return strpad(isoWeek || formatters.V.call(new Date(yr - 1, 11, 31)));
123
- },
124
- W: function () {
125
- return strpad(Math.floor((parseInt(formatters.j.call(this), 10) + 7 - (this.getDay() || 7)) / 7));
126
- },
127
- w: proto.getDay,
128
- X: proto.toLocaleTimeString,
129
- x: proto.toLocaleDateString,
130
- Y: proto.getFullYear,
131
- y: function () {
132
- return strpad(formatters.Y.call(this) % 100);
133
- },
134
- z: function () {
135
- var off = this.getTimezoneOffset(), offHrs = Math.abs(off) / 60, offMin = Math.abs(off) % 60;
136
- return (off > 0 ? '-' : '+') + strpad(offHrs) + strpad(offMin);
137
- },
138
- Z: function () {
139
- return this.toString().replace(/^.*\((.*?)\)$/, '$1');
140
- },
141
- '%': function() {
142
- return '%';
143
- }
144
- };
145
-
146
- Date.format = function (date, str) {
147
- return String(str).replace(/%([\w%])/g, function () {
148
- var f = formatters[arguments[1]];
149
- return f ? f.call(date) : arguments[0];
150
- });
151
- };
152
-
153
- Date.prototype.format = function () {
154
- return Date.format.apply(null, [this].concat(Array.prototype.slice.call(arguments)));
155
- };
156
- })();
157
-
158
- // strftime implementation
159
- var strftime = function (str, date) {
160
- return Date.format(date || new Date(), str);
161
- };
@@ -1,2 +0,0 @@
1
- var DateFormatter;!function(){"use strict";var e,t,a,n,r,o;r=864e5,o=3600,e=function(e,t){return"string"==typeof e&&"string"==typeof t&&e.toLowerCase()===t.toLowerCase()},t=function(e,a,n){var r=n||"0",o=e.toString();return o.length<a?t(r+o,a):o},a=function(e){var t,n;for(e=e||{},t=1;t<arguments.length;t++)if(n=arguments[t])for(var r in n)n.hasOwnProperty(r)&&("object"==typeof n[r]?a(e[r],n[r]):e[r]=n[r]);return e},n={dateSettings:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],meridiem:["AM","PM"],ordinal:function(e){var t=e%10,a={1:"st",2:"nd",3:"rd"};return 1!==Math.floor(e%100/10)&&a[t]?a[t]:"th"}},separators:/[ \-+\/\.T:@]/g,validParts:/[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,intParts:/[djwNzmnyYhHgGis]/g,tzParts:/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,tzClip:/[^-+\dA-Z]/g},DateFormatter=function(e){var t=this,r=a(n,e);t.dateSettings=r.dateSettings,t.separators=r.separators,t.validParts=r.validParts,t.intParts=r.intParts,t.tzParts=r.tzParts,t.tzClip=r.tzClip},DateFormatter.prototype={constructor:DateFormatter,parseDate:function(t,a){var n,r,o,i,s,d,u,l,f,c,h=this,m=!1,g=!1,p=h.dateSettings,y={date:null,year:null,month:null,day:null,hour:0,min:0,sec:0};if(!t)return void 0;if(t instanceof Date)return t;if("number"==typeof t)return new Date(t);if("U"===a)return o=parseInt(t),o?new Date(1e3*o):t;if("string"!=typeof t)return"";if(n=a.match(h.validParts),!n||0===n.length)throw new Error("Invalid date format definition.");for(r=t.replace(h.separators,"\x00").split("\x00"),o=0;o<r.length;o++)switch(i=r[o],s=parseInt(i),n[o]){case"y":case"Y":f=i.length,2===f?y.year=parseInt((70>s?"20":"19")+i):4===f&&(y.year=s),m=!0;break;case"m":case"n":case"M":case"F":isNaN(i)?(d=p.monthsShort.indexOf(i),d>-1&&(y.month=d+1),d=p.months.indexOf(i),d>-1&&(y.month=d+1)):s>=1&&12>=s&&(y.month=s),m=!0;break;case"d":case"j":s>=1&&31>=s&&(y.day=s),m=!0;break;case"g":case"h":u=n.indexOf("a")>-1?n.indexOf("a"):n.indexOf("A")>-1?n.indexOf("A"):-1,c=r[u],u>-1?(l=e(c,p.meridiem[0])?0:e(c,p.meridiem[1])?12:-1,s>=1&&12>=s&&l>-1?y.hour=s+l-1:s>=0&&23>=s&&(y.hour=s)):s>=0&&23>=s&&(y.hour=s),g=!0;break;case"G":case"H":s>=0&&23>=s&&(y.hour=s),g=!0;break;case"i":s>=0&&59>=s&&(y.min=s),g=!0;break;case"s":s>=0&&59>=s&&(y.sec=s),g=!0}if(m===!0&&y.year&&y.month&&y.day)y.date=new Date(y.year,y.month-1,y.day,y.hour,y.min,y.sec,0);else{if(g!==!0)return!1;y.date=new Date(0,0,0,y.hour,y.min,y.sec,0)}return y.date},guessDate:function(e,t){if("string"!=typeof e)return e;var a,n,r,o,i=this,s=e.replace(i.separators,"\x00").split("\x00"),d=/^[djmn]/g,u=t.match(i.validParts),l=new Date,f=0;if(!d.test(u[0]))return e;for(n=0;n<s.length;n++){switch(f=2,r=s[n],o=parseInt(r.substr(0,2)),n){case 0:"m"===u[0]||"n"===u[0]?l.setMonth(o-1):l.setDate(o);break;case 1:"m"===u[0]||"n"===u[0]?l.setDate(o):l.setMonth(o-1);break;case 2:a=l.getFullYear(),r.length<4?(l.setFullYear(parseInt(a.toString().substr(0,4-r.length)+r)),f=r.length):(l.setFullYear=parseInt(r.substr(0,4)),f=4);break;case 3:l.setHours(o);break;case 4:l.setMinutes(o);break;case 5:l.setSeconds(o)}r.substr(f).length>0&&s.splice(n+1,0,r.substr(f))}return l},parseFormat:function(e,a){var n,i=this,s=i.dateSettings,d=/\\?(.?)/gi,u=function(e,t){return n[e]?n[e]():t};return n={d:function(){return t(n.j(),2)},D:function(){return s.daysShort[n.w()]},j:function(){return a.getDate()},l:function(){return s.days[n.w()]},N:function(){return n.w()||7},w:function(){return a.getDay()},z:function(){var e=new Date(n.Y(),n.n()-1,n.j()),t=new Date(n.Y(),0,1);return Math.round((e-t)/r)},W:function(){var e=new Date(n.Y(),n.n()-1,n.j()-n.N()+3),a=new Date(e.getFullYear(),0,4);return t(1+Math.round((e-a)/r/7),2)},F:function(){return s.months[a.getMonth()]},m:function(){return t(n.n(),2)},M:function(){return s.monthsShort[a.getMonth()]},n:function(){return a.getMonth()+1},t:function(){return new Date(n.Y(),n.n(),0).getDate()},L:function(){var e=n.Y();return e%4===0&&e%100!==0||e%400===0?1:0},o:function(){var e=n.n(),t=n.W(),a=n.Y();return a+(12===e&&9>t?1:1===e&&t>9?-1:0)},Y:function(){return a.getFullYear()},y:function(){return n.Y().toString().slice(-2)},a:function(){return n.A().toLowerCase()},A:function(){var e=n.G()<12?0:1;return s.meridiem[e]},B:function(){var e=a.getUTCHours()*o,n=60*a.getUTCMinutes(),r=a.getUTCSeconds();return t(Math.floor((e+n+r+o)/86.4)%1e3,3)},g:function(){return n.G()%12||12},G:function(){return a.getHours()},h:function(){return t(n.g(),2)},H:function(){return t(n.G(),2)},i:function(){return t(a.getMinutes(),2)},s:function(){return t(a.getSeconds(),2)},u:function(){return t(1e3*a.getMilliseconds(),6)},e:function(){var e=/\((.*)\)/.exec(String(a))[1];return e||"Coordinated Universal Time"},T:function(){var e=(String(a).match(i.tzParts)||[""]).pop().replace(i.tzClip,"");return e||"UTC"},I:function(){var e=new Date(n.Y(),0),t=Date.UTC(n.Y(),0),a=new Date(n.Y(),6),r=Date.UTC(n.Y(),6);return e-t!==a-r?1:0},O:function(){var e=a.getTimezoneOffset(),n=Math.abs(e);return(e>0?"-":"+")+t(100*Math.floor(n/60)+n%60,4)},P:function(){var e=n.O();return e.substr(0,3)+":"+e.substr(3,2)},Z:function(){return 60*-a.getTimezoneOffset()},c:function(){return"Y-m-d\\TH:i:sP".replace(d,u)},r:function(){return"D, d M Y H:i:s O".replace(d,u)},U:function(){return a.getTime()/1e3||0}},u(e,e)},formatDate:function(e,t){var a,n,r,o,i,s=this,d="";if("string"==typeof e&&(e=s.parseDate(e,t),e===!1))return!1;if(e instanceof Date){for(r=t.length,a=0;r>a;a++)i=t.charAt(a),"S"!==i&&(o=s.parseFormat(i,e),a!==r-1&&s.intParts.test(i)&&"S"===t.charAt(a+1)&&(n=parseInt(o),o+=s.dateSettings.ordinal(n)),d+=o);return d}return""}}}(),function(e){"function"==typeof define&&define.amd?define(["jquery","jquery-mousewheel","date-functions"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){"use strict";function t(e,t,a){this.date=e,this.desc=t,this.style=a}var a={i18n:{ar:{months:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],dayOfWeekShort:["ن","ث","ع","خ","ج","س","ح"],dayOfWeek:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"]},ro:{months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],dayOfWeekShort:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],dayOfWeek:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"]},id:{months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],dayOfWeekShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],dayOfWeek:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},is:{months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],dayOfWeekShort:["Sun","Mán","Þrið","Mið","Fim","Fös","Lau"],dayOfWeek:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"]},bg:{months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],dayOfWeekShort:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"]},fa:{months:["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"],dayOfWeekShort:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayOfWeek:["یک‌شنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه","شنبه","یک‌شنبه"]},ru:{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],dayOfWeekShort:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"]},uk:{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],dayOfWeekShort:["Ндл","Пнд","Втр","Срд","Чтв","Птн","Сбт"],dayOfWeek:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"]},en:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},el:{months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],dayOfWeekShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayOfWeek:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"]},de:{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],dayOfWeekShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayOfWeek:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},nl:{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],dayOfWeekShort:["zo","ma","di","wo","do","vr","za"],dayOfWeek:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},tr:{months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],dayOfWeekShort:["Paz","Pts","Sal","Çar","Per","Cum","Cts"],dayOfWeek:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},fr:{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],dayOfWeekShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],dayOfWeek:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},es:{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],dayOfWeekShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],dayOfWeek:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"]},th:{months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],dayOfWeekShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayOfWeek:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"]},pl:{months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],dayOfWeekShort:["nd","pn","wt","śr","cz","pt","sb"],dayOfWeek:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},pt:{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},ch:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"]},se:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},kr:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},it:{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayOfWeek:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"]},da:{months:["January","Februar","Marts","April","Maj","Juni","July","August","September","Oktober","November","December"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},no:{months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"]},ja:{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeekShort:["日","月","火","水","木","金","土"],dayOfWeek:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"]},vi:{months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayOfWeekShort:["CN","T2","T3","T4","T5","T6","T7"],dayOfWeek:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"]},sl:{months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],dayOfWeekShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayOfWeek:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"]},cs:{months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],dayOfWeekShort:["Ne","Po","Út","St","Čt","Pá","So"]},hu:{months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],dayOfWeekShort:["Va","Hé","Ke","Sze","Cs","Pé","Szo"],dayOfWeek:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"]},az:{months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],dayOfWeekShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayOfWeek:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"]},bs:{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ca:{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],dayOfWeekShort:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"],dayOfWeek:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"]},"en-GB":{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},et:{months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],dayOfWeekShort:["P","E","T","K","N","R","L"],dayOfWeek:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"]},eu:{months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],dayOfWeekShort:["Ig.","Al.","Ar.","Az.","Og.","Or.","La."],dayOfWeek:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"]},fi:{months:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],dayOfWeekShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayOfWeek:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},gl:{months:["Xan","Feb","Maz","Abr","Mai","Xun","Xul","Ago","Set","Out","Nov","Dec"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Xov","Ven","Sab"],dayOfWeek:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"]},hr:{months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ko:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},lt:{months:["Sausio","Vasario","Kovo","Balandžio","Gegužės","Birželio","Liepos","Rugpjūčio","Rugsėjo","Spalio","Lapkričio","Gruodžio"],dayOfWeekShort:["Sek","Pir","Ant","Tre","Ket","Pen","Šeš"],dayOfWeek:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"]},lv:{months:["Janvāris","Februāris","Marts","Aprīlis ","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],dayOfWeekShort:["Sv","Pr","Ot","Tr","Ct","Pk","St"],dayOfWeek:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"]},mk:{months:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],dayOfWeekShort:["нед","пон","вто","сре","чет","пет","саб"],dayOfWeek:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"]},mn:{months:["1-р сар","2-р сар","3-р сар","4-р сар","5-р сар","6-р сар","7-р сар","8-р сар","9-р сар","10-р сар","11-р сар","12-р сар"],dayOfWeekShort:["Дав","Мяг","Лха","Пүр","Бсн","Бям","Ням"],dayOfWeek:["Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба","Ням"]},"pt-BR":{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},sk:{months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],dayOfWeekShort:["Ne","Po","Ut","St","Št","Pi","So"],dayOfWeek:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"]},sq:{months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],dayOfWeekShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],dayOfWeek:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"]},"sr-YU":{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sre","čet","Pet","Sub"],dayOfWeek:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"]},sr:{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],dayOfWeekShort:["нед","пон","уто","сре","чет","пет","суб"],dayOfWeek:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"]},sv:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayOfWeek:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"]},"zh-TW":{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},zh:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},he:{months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],dayOfWeekShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayOfWeek:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"]},hy:{months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],dayOfWeekShort:["Կի","Երկ","Երք","Չոր","Հնգ","Ուրբ","Շբթ"],dayOfWeek:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"]},kg:{months:["Үчтүн айы","Бирдин айы","Жалган Куран","Чын Куран","Бугу","Кулжа","Теке","Баш Оона","Аяк Оона","Тогуздун айы","Жетинин айы","Бештин айы"],dayOfWeekShort:["Жек","Дүй","Шей","Шар","Бей","Жум","Ише"],dayOfWeek:["Жекшемб","Дүйшөмб","Шейшемб","Шаршемб","Бейшемби","Жума","Ишенб"]},rm:{months:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],dayOfWeekShort:["Du","Gli","Ma","Me","Gie","Ve","So"],dayOfWeek:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"]}},value:"",rtl:!1,format:"Y/m/d H:i",formatTime:"H:i",formatDate:"Y/m/d",startDate:!1,step:60,monthChangeSpinner:!0,closeOnDateSelect:!1,closeOnTimeSelect:!0,closeOnWithoutClick:!0,closeOnInputClick:!0,timepicker:!0,datepicker:!0,weeks:!1,defaultTime:!1,defaultDate:!1,minDate:!1,maxDate:!1,minTime:!1,maxTime:!1,disabledMinTime:!1,disabledMaxTime:!1,allowTimes:[],opened:!1,initTime:!0,inline:!1,theme:"",onSelectDate:function(){},onSelectTime:function(){},onChangeMonth:function(){},onChangeYear:function(){},onChangeDateTime:function(){},onShow:function(){},onClose:function(){},onGenerate:function(){},withoutCopyright:!0,inverseButton:!1,hours12:!1,next:"xdsoft_next",prev:"xdsoft_prev",dayOfWeekStart:0,parentID:"body",timeHeightInTimePicker:25,timepickerScrollbar:!0,todayButton:!0,prevButton:!0,nextButton:!0,defaultSelect:!0,scrollMonth:!0,scrollTime:!0,scrollInput:!0,lazyInit:!1,mask:!1,validateOnBlur:!0,allowBlank:!0,yearStart:1950,yearEnd:2050,monthStart:0,monthEnd:11,style:"",id:"",fixed:!1,roundTime:"round",className:"",weekends:[],highlightedDates:[],highlightedPeriods:[],disabledDates:[],disabledWeekDays:[],yearOffset:0,beforeShowDay:null,enterLikeTab:!0,showApplyButton:!1},n=null,r="en",o="en",i={meridiem:["AM","PM"]},s=function(){var t=a.i18n[o],r={days:t.dayOfWeek,daysShort:t.dayOfWeekShort,months:t.months,monthsShort:e.map(t.months,function(e){return e.substring(0,3)})};n=new DateFormatter({dateSettings:e.extend({},i,r)})};e.datetimepicker={setLocale:function(e){var t=a.i18n[e]?e:r;o!=t&&(o=t,s())},RFC_2822:"D, d M Y H:i:s O",ATOM:"Y-m-dTH:i:sP",ISO_8601:"Y-m-dTH:i:sO",RFC_822:"D, d M y H:i:s O",RFC_850:"l, d-M-y H:i:s T",RFC_1036:"D, d M y H:i:s O",RFC_1123:"D, d M Y H:i:s O",RSS:"D, d M Y H:i:s O",W3C:"Y-m-dTH:i:sP"},s(),window.getComputedStyle||(window.getComputedStyle=function(e){return this.el=e,this.getPropertyValue=function(t){var a=/(\-([a-z]){1})/g;return"float"===t&&(t="styleFloat"),a.test(t)&&(t=t.replace(a,function(e,t,a){return a.toUpperCase()})),e.currentStyle[t]||null},this}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var a,n;for(a=t||0,n=this.length;n>a;a+=1)if(this[a]===e)return a;return-1}),Date.prototype.countDaysInMonth=function(){return new Date(this.getFullYear(),this.getMonth()+1,0).getDate()},e.fn.xdsoftScroller=function(t){return this.each(function(){var a,n,r,o,i,s=e(this),d=function(e){var t,a={x:0,y:0};return"touchstart"===e.type||"touchmove"===e.type||"touchend"===e.type||"touchcancel"===e.type?(t=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],a.x=t.clientX,a.y=t.clientY):("mousedown"===e.type||"mouseup"===e.type||"mousemove"===e.type||"mouseover"===e.type||"mouseout"===e.type||"mouseenter"===e.type||"mouseleave"===e.type)&&(a.x=e.clientX,a.y=e.clientY),a},u=100,l=!1,f=0,c=0,h=0,m=!1,g=0,p=function(){};return"hide"===t?void s.find(".xdsoft_scrollbar").hide():(e(this).hasClass("xdsoft_scroller_box")||(a=s.children().eq(0),n=s[0].clientHeight,r=a[0].offsetHeight,o=e('<div class="xdsoft_scrollbar"></div>'),i=e('<div class="xdsoft_scroller"></div>'),o.append(i),s.addClass("xdsoft_scroller_box").append(o),p=function(e){var t=d(e).y-f+g;0>t&&(t=0),t+i[0].offsetHeight>h&&(t=h-i[0].offsetHeight),s.trigger("scroll_element.xdsoft_scroller",[u?t/u:0])},i.on("touchstart.xdsoft_scroller mousedown.xdsoft_scroller",function(a){n||s.trigger("resize_scroll.xdsoft_scroller",[t]),f=d(a).y,g=parseInt(i.css("margin-top"),10),h=o[0].offsetHeight,"mousedown"===a.type||"touchstart"===a.type?(document&&e(document.body).addClass("xdsoft_noselect"),e([document.body,window]).on("touchend mouseup.xdsoft_scroller",function r(){e([document.body,window]).off("touchend mouseup.xdsoft_scroller",r).off("mousemove.xdsoft_scroller",p).removeClass("xdsoft_noselect")}),e(document.body).on("mousemove.xdsoft_scroller",p)):(m=!0,a.stopPropagation(),a.preventDefault())}).on("touchmove",function(e){m&&(e.preventDefault(),p(e))}).on("touchend touchcancel",function(){m=!1,g=0}),s.on("scroll_element.xdsoft_scroller",function(e,t){n||s.trigger("resize_scroll.xdsoft_scroller",[t,!0]),t=t>1?1:0>t||isNaN(t)?0:t,i.css("margin-top",u*t),setTimeout(function(){a.css("marginTop",-parseInt((a[0].offsetHeight-n)*t,10))},10)}).on("resize_scroll.xdsoft_scroller",function(e,t,d){var l,f;n=s[0].clientHeight,r=a[0].offsetHeight,l=n/r,f=l*o[0].offsetHeight,l>1?i.hide():(i.show(),i.css("height",parseInt(f>10?f:10,10)),u=o[0].offsetHeight-i[0].offsetHeight,d!==!0&&s.trigger("scroll_element.xdsoft_scroller",[t||Math.abs(parseInt(a.css("marginTop"),10))/(r-n)]))}),s.on("mousewheel",function(e){var t=Math.abs(parseInt(a.css("marginTop"),10));return t-=20*e.deltaY,0>t&&(t=0),s.trigger("scroll_element.xdsoft_scroller",[t/(r-n)]),e.stopPropagation(),!1}),s.on("touchstart",function(e){l=d(e),c=Math.abs(parseInt(a.css("marginTop"),10))}),s.on("touchmove",function(e){if(l){e.preventDefault();var t=d(e);s.trigger("scroll_element.xdsoft_scroller",[(c-(t.y-l.y))/(r-n)])}}),s.on("touchend touchcancel",function(){l=!1,c=0})),void s.trigger("resize_scroll.xdsoft_scroller",[t]))})},e.fn.datetimepicker=function(r){var i,s,d=48,u=57,l=96,f=105,c=17,h=46,m=13,g=27,p=8,y=37,v=38,b=39,k=40,x=9,D=116,T=65,S=67,w=86,M=90,O=89,_=!1,W=e.isPlainObject(r)||!r?e.extend(!0,{},a,r):e.extend(!0,{},a),C=0,F=function(e){e.on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function t(){e.is(":disabled")||e.data("xdsoft_datetimepicker")||(clearTimeout(C),C=setTimeout(function(){e.data("xdsoft_datetimepicker")||i(e),e.off("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",t).trigger("open.xdsoft")},100))})};return i=function(a){function i(){var e,t=!1;return W.startDate?t=Y.strToDate(W.startDate):(t=W.value||(a&&a.val&&a.val()?a.val():""),t?t=Y.strToDateTime(t):W.defaultDate&&(t=Y.strToDateTime(W.defaultDate),W.defaultTime&&(e=Y.strtotime(W.defaultTime),t.setHours(e.getHours()),t.setMinutes(e.getMinutes())))),t&&Y.isValidDate(t)?j.data("changed",!0):t="",t||0}var s,C,F,P,A,Y,j=e('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'),H=e('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),J=e('<div class="xdsoft_datepicker active"></div>'),z=e('<div class="xdsoft_mounthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button><div class="xdsoft_label xdsoft_month"><span></span><i></i></div><div class="xdsoft_label xdsoft_year"><span></span><i></i></div><button type="button" class="xdsoft_next"></button></div>'),I=e('<div class="xdsoft_calendar"></div>'),N=e('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),L=N.find(".xdsoft_time_box").eq(0),E=e('<div class="xdsoft_time_variant"></div>'),B=e('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),V=e('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),G=e('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),R=!1,U=0,q=0;W.id&&j.attr("id",W.id),W.style&&j.attr("style",W.style),W.weeks&&j.addClass("xdsoft_showweeks"),W.rtl&&j.addClass("xdsoft_rtl"),j.addClass("xdsoft_"+W.theme),j.addClass(W.className),z.find(".xdsoft_month span").after(V),z.find(".xdsoft_year span").after(G),z.find(".xdsoft_month,.xdsoft_year").on("touchstart mousedown.xdsoft",function(t){var a,n,r=e(this).find(".xdsoft_select").eq(0),o=0,i=0,s=r.is(":visible");for(z.find(".xdsoft_select").hide(),Y.currentTime&&(o=Y.currentTime[e(this).hasClass("xdsoft_month")?"getMonth":"getFullYear"]()),r[s?"hide":"show"](),a=r.find("div.xdsoft_option"),n=0;n<a.length&&a.eq(n).data("value")!==o;n+=1)i+=a[0].offsetHeight;return r.xdsoftScroller(i/(r.children()[0].offsetHeight-r[0].clientHeight)),t.stopPropagation(),!1}),z.find(".xdsoft_select").xdsoftScroller().on("touchstart mousedown.xdsoft",function(e){e.stopPropagation(),e.preventDefault()}).on("touchstart mousedown.xdsoft",".xdsoft_option",function(){(void 0===Y.currentTime||null===Y.currentTime)&&(Y.currentTime=Y.now());var t=Y.currentTime.getFullYear();Y&&Y.currentTime&&Y.currentTime[e(this).parent().parent().hasClass("xdsoft_monthselect")?"setMonth":"setFullYear"](e(this).data("value")),e(this).parent().parent().hide(),j.trigger("xchange.xdsoft"),W.onChangeMonth&&e.isFunction(W.onChangeMonth)&&W.onChangeMonth.call(j,Y.currentTime,j.data("input")),t!==Y.currentTime.getFullYear()&&e.isFunction(W.onChangeYear)&&W.onChangeYear.call(j,Y.currentTime,j.data("input"))}),j.setOptions=function(r){var o={},i=function(e){try{if(document.selection&&document.selection.createRange){var t=document.selection.createRange();return t.getBookmark().charCodeAt(2)-2}if(e.setSelectionRange)return e.selectionStart}catch(a){return 0}},s=function(e,t){if(e="string"==typeof e||e instanceof String?document.getElementById(e):e,!e)return!1;if(e.createTextRange){var a=e.createTextRange();return a.collapse(!0),a.moveEnd("character",t),a.moveStart("character",t),a.select(),!0}return e.setSelectionRange?(e.setSelectionRange(t,t),!0):!1},C=function(e,t){var a=e.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g,"\\$1").replace(/_/g,"{digit+}").replace(/([0-9]{1})/g,"{digit$1}").replace(/\{digit([0-9]{1})\}/g,"[0-$1_]{1}").replace(/\{digit[\+]\}/g,"[0-9_]{1}");return new RegExp(a).test(t)};W=e.extend(!0,{},W,r),r.allowTimes&&e.isArray(r.allowTimes)&&r.allowTimes.length&&(W.allowTimes=e.extend(!0,[],r.allowTimes)),r.weekends&&e.isArray(r.weekends)&&r.weekends.length&&(W.weekends=e.extend(!0,[],r.weekends)),r.highlightedDates&&e.isArray(r.highlightedDates)&&r.highlightedDates.length&&(e.each(r.highlightedDates,function(a,r){var i,s=e.map(r.split(","),e.trim),d=new t(n.parseDate(s[0],W.formatDate),s[1],s[2]),u=n.formatDate(d.date,W.formatDate);void 0!==o[u]?(i=o[u].desc,i&&i.length&&d.desc&&d.desc.length&&(o[u].desc=i+"\n"+d.desc)):o[u]=d}),W.highlightedDates=e.extend(!0,[],o)),r.highlightedPeriods&&e.isArray(r.highlightedPeriods)&&r.highlightedPeriods.length&&(o=e.extend(!0,[],W.highlightedDates),e.each(r.highlightedPeriods,function(a,r){var i,s,d,u,l,f,c;if(e.isArray(r))i=r[0],s=r[1],d=r[2],c=r[3];else{var h=e.map(r.split(","),e.trim);i=n.parseDate(h[0],W.formatDate),s=n.parseDate(h[1],W.formatDate),d=h[2],c=h[3]}for(;s>=i;)u=new t(i,d,c),l=n.formatDate(i,W.formatDate),i.setDate(i.getDate()+1),void 0!==o[l]?(f=o[l].desc,f&&f.length&&u.desc&&u.desc.length&&(o[l].desc=f+"\n"+u.desc)):o[l]=u}),W.highlightedDates=e.extend(!0,[],o)),r.disabledDates&&e.isArray(r.disabledDates)&&r.disabledDates.length&&(W.disabledDates=e.extend(!0,[],r.disabledDates)),r.disabledWeekDays&&e.isArray(r.disabledWeekDays)&&r.disabledWeekDays.length&&(W.disabledWeekDays=e.extend(!0,[],r.disabledWeekDays)),!W.open&&!W.opened||W.inline||a.trigger("open.xdsoft"),W.inline&&(R=!0,j.addClass("xdsoft_inline"),a.after(j).hide()),W.inverseButton&&(W.next="xdsoft_prev",W.prev="xdsoft_next"),W.datepicker?J.addClass("active"):J.removeClass("active"),W.timepicker?N.addClass("active"):N.removeClass("active"),W.value&&(Y.setCurrentTime(W.value),a&&a.val&&a.val(Y.str)),W.dayOfWeekStart=isNaN(W.dayOfWeekStart)?0:parseInt(W.dayOfWeekStart,10)%7,W.timepickerScrollbar||L.xdsoftScroller("hide"),W.minDate&&/^[\+\-](.*)$/.test(W.minDate)&&(W.minDate=n.formatDate(Y.strToDateTime(W.minDate),W.formatDate)),W.maxDate&&/^[\+\-](.*)$/.test(W.maxDate)&&(W.maxDate=n.formatDate(Y.strToDateTime(W.maxDate),W.formatDate)),B.toggle(W.showApplyButton),z.find(".xdsoft_today_button").css("visibility",W.todayButton?"visible":"hidden"),z.find("."+W.prev).css("visibility",W.prevButton?"visible":"hidden"),z.find("."+W.next).css("visibility",W.nextButton?"visible":"hidden"),W.mask&&(a.off("keydown.xdsoft"),W.mask===!0&&(W.mask=W.format.replace(/Y/g,"9999").replace(/F/g,"9999").replace(/m/g,"19").replace(/d/g,"39").replace(/H/g,"29").replace(/i/g,"59").replace(/s/g,"59")),
2
- "string"===e.type(W.mask)&&(C(W.mask,a.val())||(a.val(W.mask.replace(/[0-9]/g,"_")),s(a[0],0)),a.on("keydown.xdsoft",function(t){var n,r,o=this.value,F=t.which;if(F>=d&&u>=F||F>=l&&f>=F||F===p||F===h){for(n=i(this),r=F!==p&&F!==h?String.fromCharCode(F>=l&&f>=F?F-d:F):"_",F!==p&&F!==h||!n||(n-=1,r="_");/[^0-9_]/.test(W.mask.substr(n,1))&&n<W.mask.length&&n>0;)n+=F===p||F===h?-1:1;if(o=o.substr(0,n)+r+o.substr(n+1),""===e.trim(o))o=W.mask.replace(/[0-9]/g,"_");else if(n===W.mask.length)return t.preventDefault(),!1;for(n+=F===p||F===h?0:1;/[^0-9_]/.test(W.mask.substr(n,1))&&n<W.mask.length&&n>0;)n+=F===p||F===h?-1:1;C(W.mask,o)?(this.value=o,s(this,n)):""===e.trim(o)?this.value=W.mask.replace(/[0-9]/g,"_"):a.trigger("error_input.xdsoft")}else if(-1!==[T,S,w,M,O].indexOf(F)&&_||-1!==[g,v,k,y,b,D,c,x,m].indexOf(F))return!0;return t.preventDefault(),!1}))),W.validateOnBlur&&a.off("blur.xdsoft").on("blur.xdsoft",function(){if(W.allowBlank&&!e.trim(e(this).val()).length)e(this).val(null),j.data("xdsoft_datetime").empty();else if(n.parseDate(e(this).val(),W.format))j.data("xdsoft_datetime").setCurrentTime(e(this).val());else{var t=+[e(this).val()[0],e(this).val()[1]].join(""),a=+[e(this).val()[2],e(this).val()[3]].join("");e(this).val(!W.datepicker&&W.timepicker&&t>=0&&24>t&&a>=0&&60>a?[t,a].map(function(e){return e>9?e:"0"+e}).join(":"):n.formatDate(Y.now(),W.format)),j.data("xdsoft_datetime").setCurrentTime(e(this).val())}j.trigger("changedatetime.xdsoft")}),W.dayOfWeekStartPrev=0===W.dayOfWeekStart?6:W.dayOfWeekStart-1,j.trigger("xchange.xdsoft").trigger("afterOpen.xdsoft")},j.data("options",W).on("touchstart mousedown.xdsoft",function(e){return e.stopPropagation(),e.preventDefault(),G.hide(),V.hide(),!1}),L.append(E),L.xdsoftScroller(),j.on("afterOpen.xdsoft",function(){L.xdsoftScroller()}),j.append(J).append(N),W.withoutCopyright!==!0&&j.append(H),J.append(z).append(I).append(B),e(W.parentID).append(j),s=function(){var t=this;t.now=function(e){var a,n,r=new Date;return!e&&W.defaultDate&&(a=t.strToDateTime(W.defaultDate),r.setFullYear(a.getFullYear()),r.setMonth(a.getMonth()),r.setDate(a.getDate())),W.yearOffset&&r.setFullYear(r.getFullYear()+W.yearOffset),!e&&W.defaultTime&&(n=t.strtotime(W.defaultTime),r.setHours(n.getHours()),r.setMinutes(n.getMinutes())),r},t.isValidDate=function(e){return"[object Date]"!==Object.prototype.toString.call(e)?!1:!isNaN(e.getTime())},t.setCurrentTime=function(e){t.currentTime="string"==typeof e?t.strToDateTime(e):t.isValidDate(e)?e:t.now(),j.trigger("xchange.xdsoft")},t.empty=function(){t.currentTime=null},t.getCurrentTime=function(){return t.currentTime},t.nextMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var a,n=t.currentTime.getMonth()+1;return 12===n&&(t.currentTime.setFullYear(t.currentTime.getFullYear()+1),n=0),a=t.currentTime.getFullYear(),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),n+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(n),W.onChangeMonth&&e.isFunction(W.onChangeMonth)&&W.onChangeMonth.call(j,Y.currentTime,j.data("input")),a!==t.currentTime.getFullYear()&&e.isFunction(W.onChangeYear)&&W.onChangeYear.call(j,Y.currentTime,j.data("input")),j.trigger("xchange.xdsoft"),n},t.prevMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var a=t.currentTime.getMonth()-1;return-1===a&&(t.currentTime.setFullYear(t.currentTime.getFullYear()-1),a=11),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),a+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(a),W.onChangeMonth&&e.isFunction(W.onChangeMonth)&&W.onChangeMonth.call(j,Y.currentTime,j.data("input")),j.trigger("xchange.xdsoft"),a},t.getWeekOfYear=function(e){var t=new Date(e.getFullYear(),0,1);return Math.ceil(((e-t)/864e5+t.getDay()+1)/7)},t.strToDateTime=function(e){var a,r,o=[];return e&&e instanceof Date&&t.isValidDate(e)?e:(o=/^(\+|\-)(.*)$/.exec(e),o&&(o[2]=n.parseDate(o[2],W.formatDate)),o&&o[2]?(a=o[2].getTime()-6e4*o[2].getTimezoneOffset(),r=new Date(t.now(!0).getTime()+parseInt(o[1]+"1",10)*a)):r=e?n.parseDate(e,W.format):t.now(),t.isValidDate(r)||(r=t.now()),r)},t.strToDate=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?n.parseDate(e,W.formatDate):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.strtotime=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?n.parseDate(e,W.formatTime):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.str=function(){return n.formatDate(t.currentTime,W.format)},t.currentTime=this.now()},Y=new s,B.on("touchend click",function(e){e.preventDefault(),j.data("changed",!0),Y.setCurrentTime(i()),a.val(Y.str()),j.trigger("close.xdsoft")}),z.find(".xdsoft_today_button").on("touchend mousedown.xdsoft",function(){j.data("changed",!0),Y.setCurrentTime(0),j.trigger("afterOpen.xdsoft")}).on("dblclick.xdsoft",function(){var e,t,n=Y.getCurrentTime();n=new Date(n.getFullYear(),n.getMonth(),n.getDate()),e=Y.strToDate(W.minDate),e=new Date(e.getFullYear(),e.getMonth(),e.getDate()),e>n||(t=Y.strToDate(W.maxDate),t=new Date(t.getFullYear(),t.getMonth(),t.getDate()),n>t||(a.val(Y.str()),a.trigger("change"),j.trigger("close.xdsoft")))}),z.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,n=!1;!function r(e){t.hasClass(W.next)?Y.nextMonth():t.hasClass(W.prev)&&Y.prevMonth(),W.monthChangeSpinner&&(n||(a=setTimeout(r,e||100)))}(500),e([document.body,window]).on("touchend mouseup.xdsoft",function o(){clearTimeout(a),n=!0,e([document.body,window]).off("touchend mouseup.xdsoft",o)})}),N.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,n=!1,r=110;!function o(e){var i=L[0].clientHeight,s=E[0].offsetHeight,d=Math.abs(parseInt(E.css("marginTop"),10));t.hasClass(W.next)&&s-i-W.timeHeightInTimePicker>=d?E.css("marginTop","-"+(d+W.timeHeightInTimePicker)+"px"):t.hasClass(W.prev)&&d-W.timeHeightInTimePicker>=0&&E.css("marginTop","-"+(d-W.timeHeightInTimePicker)+"px"),L.trigger("scroll_element.xdsoft_scroller",[Math.abs(parseInt(E.css("marginTop"),10)/(s-i))]),r=r>10?10:r-10,n||(a=setTimeout(o,e||r))}(500),e([document.body,window]).on("touchend mouseup.xdsoft",function i(){clearTimeout(a),n=!0,e([document.body,window]).off("touchend mouseup.xdsoft",i)})}),C=0,j.on("xchange.xdsoft",function(t){clearTimeout(C),C=setTimeout(function(){(void 0===Y.currentTime||null===Y.currentTime)&&(Y.currentTime=Y.now());for(var t,a,i,s,d,u,l,f,c,h,m="",g=new Date(Y.currentTime.getFullYear(),Y.currentTime.getMonth(),1,12,0,0),p=0,y=Y.now(),v=!1,b=!1,k=[],x=!0,D="",T="";g.getDay()!==W.dayOfWeekStart;)g.setDate(g.getDate()-1);for(m+="<table><thead><tr>",W.weeks&&(m+="<th></th>"),t=0;7>t;t+=1)m+="<th>"+W.i18n[o].dayOfWeekShort[(t+W.dayOfWeekStart)%7]+"</th>";for(m+="</tr></thead>",m+="<tbody>",W.maxDate!==!1&&(v=Y.strToDate(W.maxDate),v=new Date(v.getFullYear(),v.getMonth(),v.getDate(),23,59,59,999)),W.minDate!==!1&&(b=Y.strToDate(W.minDate),b=new Date(b.getFullYear(),b.getMonth(),b.getDate()));p<Y.currentTime.countDaysInMonth()||g.getDay()!==W.dayOfWeekStart||Y.currentTime.getMonth()===g.getMonth();)k=[],p+=1,i=g.getDay(),s=g.getDate(),d=g.getFullYear(),u=g.getMonth(),l=Y.getWeekOfYear(g),h="",k.push("xdsoft_date"),f=W.beforeShowDay&&e.isFunction(W.beforeShowDay.call)?W.beforeShowDay.call(j,g):null,v!==!1&&g>v||b!==!1&&b>g||f&&f[0]===!1?k.push("xdsoft_disabled"):-1!==W.disabledDates.indexOf(n.formatDate(g,W.formatDate))?k.push("xdsoft_disabled"):-1!==W.disabledWeekDays.indexOf(i)&&k.push("xdsoft_disabled"),f&&""!==f[1]&&k.push(f[1]),Y.currentTime.getMonth()!==u&&k.push("xdsoft_other_month"),(W.defaultSelect||j.data("changed"))&&n.formatDate(Y.currentTime,W.formatDate)===n.formatDate(g,W.formatDate)&&k.push("xdsoft_current"),n.formatDate(y,W.formatDate)===n.formatDate(g,W.formatDate)&&k.push("xdsoft_today"),(0===g.getDay()||6===g.getDay()||-1!==W.weekends.indexOf(n.formatDate(g,W.formatDate)))&&k.push("xdsoft_weekend"),void 0!==W.highlightedDates[n.formatDate(g,W.formatDate)]&&(a=W.highlightedDates[n.formatDate(g,W.formatDate)],k.push(void 0===a.style?"xdsoft_highlighted_default":a.style),h=void 0===a.desc?"":a.desc),W.beforeShowDay&&e.isFunction(W.beforeShowDay)&&k.push(W.beforeShowDay(g)),x&&(m+="<tr>",x=!1,W.weeks&&(m+="<th>"+l+"</th>")),m+='<td data-date="'+s+'" data-month="'+u+'" data-year="'+d+'" class="xdsoft_date xdsoft_day_of_week'+g.getDay()+" "+k.join(" ")+'" title="'+h+'"><div>'+s+"</div></td>",g.getDay()===W.dayOfWeekStartPrev&&(m+="</tr>",x=!0),g.setDate(s+1);if(m+="</tbody></table>",I.html(m),z.find(".xdsoft_label span").eq(0).text(W.i18n[o].months[Y.currentTime.getMonth()]),z.find(".xdsoft_label span").eq(1).text(Y.currentTime.getFullYear()),D="",T="",u="",c=function(t,a){var r,o,i=Y.now(),s=W.allowTimes&&e.isArray(W.allowTimes)&&W.allowTimes.length;i.setHours(t),t=parseInt(i.getHours(),10),i.setMinutes(a),a=parseInt(i.getMinutes(),10),r=new Date(Y.currentTime),r.setHours(t),r.setMinutes(a),k=[],(W.minDateTime!==!1&&W.minDateTime>r||W.maxTime!==!1&&Y.strtotime(W.maxTime).getTime()<i.getTime()||W.minTime!==!1&&Y.strtotime(W.minTime).getTime()>i.getTime())&&k.push("xdsoft_disabled"),(W.minDateTime!==!1&&W.minDateTime>r||W.disabledMinTime!==!1&&i.getTime()>Y.strtotime(W.disabledMinTime).getTime()&&W.disabledMaxTime!==!1&&i.getTime()<Y.strtotime(W.disabledMaxTime).getTime())&&k.push("xdsoft_disabled"),o=new Date(Y.currentTime),o.setHours(parseInt(Y.currentTime.getHours(),10)),s||o.setMinutes(Math[W.roundTime](Y.currentTime.getMinutes()/W.step)*W.step),(W.initTime||W.defaultSelect||j.data("changed"))&&o.getHours()===parseInt(t,10)&&(!s&&W.step>59||o.getMinutes()===parseInt(a,10))&&(W.defaultSelect||j.data("changed")?k.push("xdsoft_current"):W.initTime&&k.push("xdsoft_init_time")),parseInt(y.getHours(),10)===parseInt(t,10)&&parseInt(y.getMinutes(),10)===parseInt(a,10)&&k.push("xdsoft_today"),D+='<div class="xdsoft_time '+k.join(" ")+'" data-hour="'+t+'" data-minute="'+a+'">'+n.formatDate(i,W.formatTime)+"</div>"},W.allowTimes&&e.isArray(W.allowTimes)&&W.allowTimes.length)for(p=0;p<W.allowTimes.length;p+=1)T=Y.strtotime(W.allowTimes[p]).getHours(),u=Y.strtotime(W.allowTimes[p]).getMinutes(),c(T,u);else for(p=0,t=0;p<(W.hours12?12:24);p+=1)for(t=0;60>t;t+=W.step)T=(10>p?"0":"")+p,u=(10>t?"0":"")+t,c(T,u);for(E.html(D),r="",p=0,p=parseInt(W.yearStart,10)+W.yearOffset;p<=parseInt(W.yearEnd,10)+W.yearOffset;p+=1)r+='<div class="xdsoft_option '+(Y.currentTime.getFullYear()===p?"xdsoft_current":"")+'" data-value="'+p+'">'+p+"</div>";for(G.children().eq(0).html(r),p=parseInt(W.monthStart,10),r="";p<=parseInt(W.monthEnd,10);p+=1)r+='<div class="xdsoft_option '+(Y.currentTime.getMonth()===p?"xdsoft_current":"")+'" data-value="'+p+'">'+W.i18n[o].months[p]+"</div>";V.children().eq(0).html(r),e(j).trigger("generate.xdsoft")},10),t.stopPropagation()}).on("afterOpen.xdsoft",function(){if(W.timepicker){var e,t,a,n;E.find(".xdsoft_current").length?e=".xdsoft_current":E.find(".xdsoft_init_time").length&&(e=".xdsoft_init_time"),e?(t=L[0].clientHeight,a=E[0].offsetHeight,n=E.find(e).index()*W.timeHeightInTimePicker+1,n>a-t&&(n=a-t),L.trigger("scroll_element.xdsoft_scroller",[parseInt(n,10)/(a-t)])):L.trigger("scroll_element.xdsoft_scroller",[0])}}),F=0,I.on("touchend click.xdsoft","td",function(t){t.stopPropagation(),F+=1;var n=e(this),r=Y.currentTime;return(void 0===r||null===r)&&(Y.currentTime=Y.now(),r=Y.currentTime),n.hasClass("xdsoft_disabled")?!1:(r.setDate(1),r.setFullYear(n.data("year")),r.setMonth(n.data("month")),r.setDate(n.data("date")),j.trigger("select.xdsoft",[r]),a.val(Y.str()),W.onSelectDate&&e.isFunction(W.onSelectDate)&&W.onSelectDate.call(j,Y.currentTime,j.data("input"),t),j.data("changed",!0),j.trigger("xchange.xdsoft"),j.trigger("changedatetime.xdsoft"),(F>1||W.closeOnDateSelect===!0||W.closeOnDateSelect===!1&&!W.timepicker)&&!W.inline&&j.trigger("close.xdsoft"),void setTimeout(function(){F=0},200))}),E.on("touchend click.xdsoft","div",function(t){t.stopPropagation();var a=e(this),n=Y.currentTime;return(void 0===n||null===n)&&(Y.currentTime=Y.now(),n=Y.currentTime),a.hasClass("xdsoft_disabled")?!1:(n.setHours(a.data("hour")),n.setMinutes(a.data("minute")),j.trigger("select.xdsoft",[n]),j.data("input").val(Y.str()),W.onSelectTime&&e.isFunction(W.onSelectTime)&&W.onSelectTime.call(j,Y.currentTime,j.data("input"),t),j.data("changed",!0),j.trigger("xchange.xdsoft"),j.trigger("changedatetime.xdsoft"),void(W.inline!==!0&&W.closeOnTimeSelect===!0&&j.trigger("close.xdsoft")))}),J.on("mousewheel.xdsoft",function(e){return W.scrollMonth?(e.deltaY<0?Y.nextMonth():Y.prevMonth(),!1):!0}),a.on("mousewheel.xdsoft",function(e){return W.scrollInput?!W.datepicker&&W.timepicker?(P=E.find(".xdsoft_current").length?E.find(".xdsoft_current").eq(0).index():0,P+e.deltaY>=0&&P+e.deltaY<E.children().length&&(P+=e.deltaY),E.children().eq(P).length&&E.children().eq(P).trigger("mousedown"),!1):W.datepicker&&!W.timepicker?(J.trigger(e,[e.deltaY,e.deltaX,e.deltaY]),a.val&&a.val(Y.str()),j.trigger("changedatetime.xdsoft"),!1):void 0:!0}),j.on("changedatetime.xdsoft",function(t){if(W.onChangeDateTime&&e.isFunction(W.onChangeDateTime)){var a=j.data("input");W.onChangeDateTime.call(j,Y.currentTime,a,t),delete W.value,a.trigger("change")}}).on("generate.xdsoft",function(){W.onGenerate&&e.isFunction(W.onGenerate)&&W.onGenerate.call(j,Y.currentTime,j.data("input")),R&&(j.trigger("afterOpen.xdsoft"),R=!1)}).on("click.xdsoft",function(e){e.stopPropagation()}),P=0,A=function(){var t,a=j.data("input").offset(),n=j.data("input")[0],r=a.top+n.offsetHeight-1,o=a.left,i="absolute";"rtl"==j.data("input").parent().css("direction")&&(o-=j.outerWidth()-j.data("input").outerWidth()),W.fixed?(r-=e(window).scrollTop(),o-=e(window).scrollLeft(),i="fixed"):(r+n.offsetHeight>e(window).height()+e(window).scrollTop()&&(r=a.top-n.offsetHeight+1),0>r&&(r=0),o+n.offsetWidth>e(window).width()&&(o=e(window).width()-n.offsetWidth)),t=j[0];do if(t=t.parentNode,"relative"===window.getComputedStyle(t).getPropertyValue("position")&&e(window).width()>=t.offsetWidth){o-=(e(window).width()-t.offsetWidth)/2;break}while("HTML"!==t.nodeName);j.css({left:o,top:r,position:i})},j.on("open.xdsoft",function(t){var a=!0;W.onShow&&e.isFunction(W.onShow)&&(a=W.onShow.call(j,Y.currentTime,j.data("input"),t)),a!==!1&&(j.show(),A(),e(window).off("resize.xdsoft",A).on("resize.xdsoft",A),W.closeOnWithoutClick&&e([document.body,window]).on("touchstart mousedown.xdsoft",function n(){j.trigger("close.xdsoft"),e([document.body,window]).off("touchstart mousedown.xdsoft",n)}))}).on("close.xdsoft",function(t){var a=!0;z.find(".xdsoft_month,.xdsoft_year").find(".xdsoft_select").hide(),W.onClose&&e.isFunction(W.onClose)&&(a=W.onClose.call(j,Y.currentTime,j.data("input"),t)),a===!1||W.opened||W.inline||j.hide(),t.stopPropagation()}).on("toggle.xdsoft",function(){j.trigger(j.is(":visible")?"close.xdsoft":"open.xdsoft")}).data("input",a),U=0,q=0,j.data("xdsoft_datetime",Y),j.setOptions(W),Y.setCurrentTime(i()),a.data("xdsoft_datetimepicker",j).on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function(){a.is(":disabled")||a.data("xdsoft_datetimepicker").is(":visible")&&W.closeOnInputClick||(clearTimeout(U),U=setTimeout(function(){a.is(":disabled")||(R=!0,Y.setCurrentTime(i()),j.trigger("open.xdsoft"))},100))}).on("keydown.xdsoft",function(t){var a,n=(this.value,t.which);return-1!==[m].indexOf(n)&&W.enterLikeTab?(a=e("input:visible,textarea:visible,button:visible,a:visible"),j.trigger("close.xdsoft"),a.eq(a.index(this)+1).focus(),!1):-1!==[x].indexOf(n)?(j.trigger("close.xdsoft"),!0):void 0})},s=function(t){var a=t.data("xdsoft_datetimepicker");a&&(a.data("xdsoft_datetime",null),a.remove(),t.data("xdsoft_datetimepicker",null).off(".xdsoft"),e(window).off("resize.xdsoft"),e([window,document.body]).off("mousedown.xdsoft touchstart"),t.unmousewheel&&t.unmousewheel())},e(document).off("keydown.xdsoftctrl keyup.xdsoftctrl").on("keydown.xdsoftctrl",function(e){e.keyCode===c&&(_=!0)}).on("keyup.xdsoftctrl",function(e){e.keyCode===c&&(_=!1)}),this.each(function(){var t,a=e(this).data("xdsoft_datetimepicker");if(a){if("string"===e.type(r))switch(r){case"show":e(this).select().focus(),a.trigger("open.xdsoft");break;case"hide":a.trigger("close.xdsoft");break;case"toggle":a.trigger("toggle.xdsoft");break;case"destroy":s(e(this));break;case"reset":this.value=this.defaultValue,this.value&&a.data("xdsoft_datetime").isValidDate(n.parseDate(this.value,W.format))||a.data("changed",!1),a.data("xdsoft_datetime").setCurrentTime(this.value);break;case"validate":t=a.data("input"),t.trigger("blur.xdsoft")}else a.setOptions(r);return 0}"string"!==e.type(r)&&(!W.lazyInit||W.open||W.inline?i(e(this)):F(e(this)))})},e.fn.datetimepicker.defaults=a}),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){function t(t){var i=t||window.event,s=d.call(arguments,1),u=0,f=0,c=0,h=0,m=0,g=0;if(t=e.event.fix(i),t.type="mousewheel","detail"in i&&(c=-1*i.detail),"wheelDelta"in i&&(c=i.wheelDelta),"wheelDeltaY"in i&&(c=i.wheelDeltaY),"wheelDeltaX"in i&&(f=-1*i.wheelDeltaX),"axis"in i&&i.axis===i.HORIZONTAL_AXIS&&(f=-1*c,c=0),u=0===c?f:c,"deltaY"in i&&(c=-1*i.deltaY,u=c),"deltaX"in i&&(f=i.deltaX,0===c&&(u=-1*f)),0!==c||0!==f){if(1===i.deltaMode){var p=e.data(this,"mousewheel-line-height");u*=p,c*=p,f*=p}else if(2===i.deltaMode){var y=e.data(this,"mousewheel-page-height");u*=y,c*=y,f*=y}if(h=Math.max(Math.abs(c),Math.abs(f)),(!o||o>h)&&(o=h,n(i,h)&&(o/=40)),n(i,h)&&(u/=40,f/=40,c/=40),u=Math[u>=1?"floor":"ceil"](u/o),f=Math[f>=1?"floor":"ceil"](f/o),c=Math[c>=1?"floor":"ceil"](c/o),l.settings.normalizeOffset&&this.getBoundingClientRect){var v=this.getBoundingClientRect();m=t.clientX-v.left,g=t.clientY-v.top}return t.deltaX=f,t.deltaY=c,t.deltaFactor=o,t.offsetX=m,t.offsetY=g,t.deltaMode=0,s.unshift(t,u,f,c),r&&clearTimeout(r),r=setTimeout(a,200),(e.event.dispatch||e.event.handle).apply(this,s)}}function a(){o=null}function n(e,t){return l.settings.adjustOldDeltas&&"mousewheel"===e.type&&t%120===0}var r,o,i=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],s="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],d=Array.prototype.slice;if(e.event.fixHooks)for(var u=i.length;u;)e.event.fixHooks[i[--u]]=e.event.mouseHooks;var l=e.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var a=s.length;a;)this.addEventListener(s[--a],t,!1);else this.onmousewheel=t;e.data(this,"mousewheel-line-height",l.getLineHeight(this)),e.data(this,"mousewheel-page-height",l.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var a=s.length;a;)this.removeEventListener(s[--a],t,!1);else this.onmousewheel=null;e.removeData(this,"mousewheel-line-height"),e.removeData(this,"mousewheel-page-height")},getLineHeight:function(t){var a=e(t),n=a["offsetParent"in e.fn?"offsetParent":"parent"]();return n.length||(n=e("body")),parseInt(n.css("fontSize"),10)||parseInt(a.css("fontSize"),10)||16},getPageHeight:function(t){return e(t).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})});