alchemy_cms 4.1.2 → 4.2.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE/Bug_report.md +0 -5
- data/.rubocop.yml +4 -1
- data/.travis.yml +3 -3
- data/CHANGELOG.md +29 -10
- data/Gemfile +5 -7
- data/README.md +114 -62
- data/Rakefile +2 -2
- data/alchemy_cms.gemspec +5 -5
- data/app/assets/images/alchemy/icon.svg +1 -1
- data/app/assets/javascripts/alchemy/admin.js +2 -0
- data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +0 -24
- data/app/assets/javascripts/alchemy/alchemy.datepicker.js.coffee +11 -9
- data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +7 -24
- data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +9 -8
- data/app/assets/javascripts/alchemy/alchemy.fixed_elements.js +38 -0
- data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +2 -4
- data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +1 -1
- data/app/assets/stylesheets/alchemy/_mixins.scss +2 -1
- data/app/assets/stylesheets/alchemy/_variables.scss +7 -2
- data/app/assets/stylesheets/alchemy/admin.scss +2 -1
- data/app/assets/stylesheets/alchemy/archive.scss +18 -4
- data/app/assets/stylesheets/alchemy/buttons.scss +1 -1
- data/app/assets/stylesheets/alchemy/dialogs.scss +1 -1
- data/app/assets/stylesheets/alchemy/elements.scss +154 -90
- data/app/assets/stylesheets/alchemy/filter_field.scss +30 -0
- data/app/assets/stylesheets/alchemy/flatpickr.scss +839 -0
- data/app/assets/stylesheets/alchemy/forms.scss +5 -1
- data/app/assets/stylesheets/alchemy/frame.scss +6 -14
- data/app/assets/stylesheets/alchemy/navigation.scss +109 -98
- data/app/assets/stylesheets/alchemy/search.scss +11 -29
- data/app/assets/stylesheets/alchemy/tables.scss +0 -23
- data/app/assets/stylesheets/alchemy/tags.scss +4 -27
- data/app/assets/stylesheets/alchemy/toolbar.scss +12 -2
- data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +4 -33
- data/app/controllers/alchemy/admin/attachments_controller.rb +1 -12
- data/app/controllers/alchemy/admin/contents_controller.rb +2 -24
- data/app/controllers/alchemy/admin/elements_controller.rb +11 -49
- data/app/controllers/alchemy/admin/pages_controller.rb +1 -1
- data/app/controllers/alchemy/admin/pictures_controller.rb +1 -14
- data/app/controllers/alchemy/api/contents_controller.rb +1 -1
- data/app/controllers/alchemy/api/elements_controller.rb +1 -1
- data/app/controllers/alchemy/api/pages_controller.rb +1 -1
- data/app/controllers/concerns/alchemy/admin/archive_overlay.rb +20 -0
- data/app/helpers/alchemy/admin/base_helper.rb +8 -18
- data/app/helpers/alchemy/admin/elements_helper.rb +55 -85
- data/app/helpers/alchemy/admin/pictures_helper.rb +0 -23
- data/app/helpers/alchemy/elements_helper.rb +80 -120
- data/app/helpers/alchemy/pages_helper.rb +5 -24
- data/app/models/alchemy/content.rb +0 -1
- data/app/models/alchemy/content/factory.rb +33 -57
- data/app/models/alchemy/element.rb +46 -66
- data/app/models/alchemy/element/element_contents.rb +2 -2
- data/app/models/alchemy/page.rb +34 -4
- data/app/models/alchemy/page/page_elements.rb +30 -122
- data/app/serializers/alchemy/attachment_serializer.rb +0 -2
- data/app/serializers/alchemy/content_serializer.rb +0 -2
- data/app/serializers/alchemy/element_serializer.rb +0 -3
- data/app/serializers/alchemy/essence_boolean_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_date_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_file_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_html_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_link_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_picture_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_richtext_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_select_serializer.rb +0 -2
- data/app/serializers/alchemy/essence_text_serializer.rb +0 -2
- data/app/serializers/alchemy/legacy_element_serializer.rb +0 -3
- data/app/serializers/alchemy/page_serializer.rb +2 -8
- data/app/serializers/alchemy/page_tree_serializer.rb +1 -1
- data/app/serializers/alchemy/picture_serializer.rb +0 -2
- data/app/views/alchemy/admin/clipboard/index.html.erb +2 -2
- data/app/views/alchemy/admin/clipboard/insert.js.erb +9 -12
- data/app/views/alchemy/admin/contents/create.js.erb +4 -30
- data/app/views/alchemy/admin/elements/_element.html.erb +27 -12
- data/app/views/alchemy/admin/elements/_element_toolbar.html.erb +1 -1
- data/app/views/alchemy/admin/elements/_new_element_form.html.erb +0 -10
- data/app/views/alchemy/admin/elements/create.js.erb +12 -12
- data/app/views/alchemy/admin/elements/fold.js.erb +1 -1
- data/app/views/alchemy/admin/elements/index.html.erb +20 -19
- data/app/views/alchemy/admin/elements/publish.js.erb +5 -0
- data/app/views/alchemy/admin/elements/trash.js.erb +4 -1
- data/app/views/alchemy/admin/essence_pictures/assign.js.erb +0 -7
- data/app/views/alchemy/admin/essence_pictures/destroy.js.erb +0 -22
- data/app/views/alchemy/admin/pages/_publication_fields.html.erb +2 -4
- data/app/views/alchemy/admin/pages/edit.html.erb +1 -1
- data/app/views/alchemy/admin/pages/index.html.erb +14 -10
- data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +1 -1
- data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +1 -1
- data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +7 -5
- data/app/views/alchemy/admin/partials/_routes.html.erb +0 -1
- data/app/views/alchemy/admin/partials/_search_form.html.erb +6 -4
- data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +6 -3
- data/app/views/alchemy/admin/pictures/index.html.erb +1 -1
- data/app/views/alchemy/admin/trash/index.html.erb +8 -7
- data/app/views/alchemy/elements/_editor_not_found.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_picture_editor.html.erb +4 -19
- data/app/views/layouts/alchemy/admin.html.erb +1 -0
- data/bin/rspec +0 -5
- data/config/alchemy/config.yml +3 -0
- data/config/brakeman.ignore +1 -1
- data/config/locales/alchemy.en.yml +6 -12
- data/config/routes.rb +1 -5
- data/db/migrate/20180226123013_alchemy_four_point_zero.rb +0 -29
- data/db/migrate/20180519204655_add_fixed_to_alchemy_elements.rb +6 -0
- data/lib/alchemy/admin/locale.rb +1 -1
- data/lib/alchemy/cache_digests/template_tracker.rb +4 -27
- data/lib/alchemy/elements_finder.rb +111 -0
- data/lib/alchemy/errors.rb +0 -4
- data/lib/alchemy/modules.rb +49 -18
- data/lib/alchemy/tasks/tidy.rb +3 -40
- data/lib/alchemy/test_support/controller_requests.rb +1 -1
- data/lib/alchemy/test_support/essence_shared_examples.rb +1 -1
- data/lib/alchemy/test_support/factories/attachment_factory.rb +5 -3
- data/lib/alchemy/test_support/factories/content_factory.rb +4 -4
- data/lib/alchemy/test_support/factories/dummy_user_factory.rb +5 -5
- data/lib/alchemy/test_support/factories/element_factory.rb +12 -7
- data/lib/alchemy/test_support/factories/essence_text_factory.rb +1 -1
- data/lib/alchemy/test_support/factories/language_factory.rb +13 -13
- data/lib/alchemy/test_support/factories/page_factory.rb +18 -17
- data/lib/alchemy/test_support/factories/picture_factory.rb +6 -4
- data/lib/alchemy/test_support/factories/site_factory.rb +6 -6
- data/lib/alchemy/tinymce.rb +1 -1
- data/lib/alchemy/upgrader/four_point_two.rb +68 -0
- data/lib/alchemy/upgrader/tasks/cells_migration.rb +41 -0
- data/lib/alchemy/upgrader/tasks/cells_upgrader.rb +146 -0
- data/lib/alchemy/upgrader/tasks/picture_gallery_migration.rb +65 -0
- data/lib/alchemy/upgrader/tasks/picture_gallery_upgrader.rb +195 -0
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +1 -0
- data/lib/rails/generators/alchemy/elements/elements_generator.rb +1 -0
- data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +0 -3
- data/lib/rails/generators/alchemy/elements/templates/editor.html.haml +0 -3
- data/lib/rails/generators/alchemy/elements/templates/editor.html.slim +0 -3
- data/lib/rails/generators/alchemy/elements/templates/view.html.erb +3 -14
- data/lib/rails/generators/alchemy/elements/templates/view.html.haml +3 -10
- data/lib/rails/generators/alchemy/elements/templates/view.html.slim +3 -10
- data/lib/tasks/alchemy/tidy.rake +1 -23
- data/lib/tasks/alchemy/upgrade.rake +44 -1
- data/vendor/assets/javascripts/flatpickr/flatpickr.min.js +2 -0
- data/vendor/assets/javascripts/tinymce/license.txt +0 -0
- data/vendor/assets/javascripts/tinymce/tinymce.min.js +2 -2
- metadata +25 -31
- data/app/assets/stylesheets/alchemy/jquery.datetimepicker.scss +0 -478
- data/app/models/alchemy/cell.rb +0 -95
- data/app/models/alchemy/page/page_cells.rb +0 -69
- data/app/serializers/alchemy/cell_serializer.rb +0 -19
- data/app/views/alchemy/admin/contents/new.html.erb +0 -11
- data/app/views/alchemy/admin/contents/order.js.erb +0 -3
- data/app/views/alchemy/admin/elements/_add_picture.html.erb +0 -14
- data/app/views/alchemy/admin/elements/_picture_gallery_editor.html.erb +0 -24
- data/bin/spring +0 -16
- data/lib/alchemy/test_support/factories/cell_factory.rb +0 -9
- data/vendor/assets/javascripts/date-formatter.js +0 -161
- data/vendor/assets/javascripts/jquery_plugins/jquery.datetimepicker.full.min.js +0 -2
data/app/models/alchemy/cell.rb
DELETED
|
@@ -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,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)}})});
|