kaui 0.1.18 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. data/.gitignore +10 -0
  2. data/.travis.yml +30 -0
  3. data/Gemfile +21 -0
  4. data/Gemfile.lock +107 -0
  5. data/README.md +60 -0
  6. data/app/assets/images/kaui/.gitkeep +0 -0
  7. data/{test/dummy/tmp/cache/assets/D07/DA0/sprockets%2Ffaad9b18203975dbf0c60f3234a51874 → app/assets/javascripts/kaui/analytics.js} +0 -0
  8. data/{test/dummy/tmp/cache/assets/C8D/080/sprockets%2F4556c595251e3b8d4f688467e330da26 → app/assets/javascripts/kaui/bootstrap-tweaks.js} +0 -0
  9. data/app/assets/javascripts/kaui/validation.js +21 -0
  10. data/app/assets/stylesheets/kaui/analytics.css +26 -0
  11. data/app/controllers/kaui/accounts_controller.rb +0 -3
  12. data/app/controllers/kaui/analytics_controller.rb +20 -11
  13. data/app/controllers/kaui/engine_controller.rb +13 -4
  14. data/app/controllers/kaui/invoices_controller.rb +1 -1
  15. data/app/controllers/kaui/refunds_controller.rb +16 -1
  16. data/app/controllers/kaui/subscriptions_controller.rb +6 -0
  17. data/app/controllers/kaui/tag_definitions_controller.rb +7 -2
  18. data/app/helpers/kaui/date_helper.rb +2 -3
  19. data/app/helpers/kaui/killbill_helper.rb +0 -3
  20. data/app/models/kaui/account.rb +0 -2
  21. data/app/models/kaui/account_timeline.rb +0 -2
  22. data/app/models/kaui/audit_log.rb +0 -2
  23. data/app/models/kaui/bundle.rb +0 -2
  24. data/app/models/kaui/invoice.rb +1 -3
  25. data/app/models/kaui/invoice_item.rb +1 -3
  26. data/app/models/kaui/payment.rb +7 -3
  27. data/app/models/kaui/payment_attempt.rb +1 -3
  28. data/app/models/kaui/payment_method.rb +1 -3
  29. data/app/models/kaui/plugin_info.rb +1 -3
  30. data/app/models/kaui/plugin_info_property.rb +1 -3
  31. data/app/models/kaui/refund.rb +1 -3
  32. data/app/models/kaui/time_series_data.rb +5 -1
  33. data/app/views/kaui/account_timelines/show.html.erb +10 -10
  34. data/app/views/kaui/accounts/show.html.erb +1 -1
  35. data/app/views/kaui/bundles/show.html.erb +1 -1
  36. data/app/views/kaui/home/index.html.erb +10 -0
  37. data/app/views/kaui/invoices/show.html.erb +6 -6
  38. data/app/views/kaui/layouts/kaui_application.html.erb +48 -0
  39. data/app/views/kaui/payments/_payments_table.html.erb +2 -2
  40. data/app/views/kaui/refunds/show.html.erb +2 -2
  41. data/app/views/kaui/subscriptions/_subscriptions_table.html.erb +20 -39
  42. data/app/views/kaui/subscriptions/show.html.erb +2 -2
  43. data/bin/kaui +4 -0
  44. data/config/routes.rb +2 -2
  45. data/kaui.gemspec +27 -0
  46. data/lib/generators/kaui/install/install_generator.rb +68 -0
  47. data/lib/generators/kaui/install/templates/app/assets/javascripts/kaui/all.js +16 -0
  48. data/lib/generators/kaui/install/templates/app/assets/stylesheets/kaui/all.css +11 -0
  49. data/lib/generators/kaui/install/templates/config/initializers/kaui.rb +3 -0
  50. data/lib/kaui/engine.rb +12 -0
  51. data/lib/kaui/installer/installer.rb +82 -0
  52. data/lib/kaui/version.rb +1 -1
  53. data/lib/kaui.rb +13 -1
  54. data/script/rails +8 -0
  55. data/script/sandbox +25 -0
  56. data/test/dummy/app/assets/javascripts/application.js +5 -3
  57. data/test/dummy/app/assets/stylesheets/application.css +2 -1
  58. data/test/dummy/app/mailers/.gitkeep +0 -0
  59. data/test/dummy/app/models/.gitkeep +0 -0
  60. data/test/dummy/lib/assets/.gitkeep +0 -0
  61. data/test/dummy/log/.gitkeep +0 -0
  62. data/test/test_helper.rb +18 -0
  63. data/{test/dummy/vendor → vendor}/assets/images/img/glyphicons-halflings-white.png +0 -0
  64. data/{test/dummy/vendor → vendor}/assets/images/img/glyphicons-halflings.png +0 -0
  65. data/vendor/assets/javascripts/js/bootstrap-datepicker.cd46d38.js +1211 -0
  66. data/{test/dummy/vendor/assets/javascripts → vendor/assets/javascripts/js}/bootstrap.v2.0.4.min.js +0 -0
  67. data/{test/dummy/vendor/assets/javascripts → vendor/assets/javascripts/js}/jquery.dataTables.v1.9.3.min.js +0 -0
  68. data/vendor/assets/stylesheets/css/bootstrap-datepicker.cd46d38.css +274 -0
  69. data/{test/dummy/vendor/assets/stylesheets → vendor/assets/stylesheets/css}/bootstrap.v2.0.4.min.css +0 -0
  70. metadata +131 -130
  71. data/README.rdoc +0 -36
  72. data/app/assets/javascripts/kaui/account_timeline.js +0 -2
  73. data/app/assets/javascripts/kaui/application.js +0 -15
  74. data/app/assets/javascripts/kaui/bundles.js +0 -2
  75. data/app/assets/javascripts/kaui/chargebacks.js +0 -2
  76. data/app/assets/javascripts/kaui/extpayments.js +0 -2
  77. data/app/assets/javascripts/kaui/home.js +0 -2
  78. data/app/assets/javascripts/kaui/invoices.js +0 -2
  79. data/app/assets/javascripts/kaui/payments.js +0 -2
  80. data/app/assets/javascripts/kaui/refunds.js +0 -2
  81. data/app/assets/stylesheets/kaui/account_timeline.css +0 -4
  82. data/app/assets/stylesheets/kaui/application.css +0 -13
  83. data/app/assets/stylesheets/kaui/bundles.css +0 -4
  84. data/app/assets/stylesheets/kaui/chargebacks.css +0 -4
  85. data/app/assets/stylesheets/kaui/extpayments.css +0 -4
  86. data/app/assets/stylesheets/kaui/home.css +0 -4
  87. data/app/assets/stylesheets/kaui/invoices.css +0 -4
  88. data/app/assets/stylesheets/kaui/payments.css +0 -4
  89. data/app/assets/stylesheets/kaui/refunds.css +0 -4
  90. data/app/controllers/kaui/tags_controller.rb +0 -85
  91. data/app/views/kaui/account_emails/edit.html.erb +0 -6
  92. data/app/views/kaui/analytics/payments_over_time.html.erb +0 -9
  93. data/app/views/kaui/tags/_form.html.erb +0 -25
  94. data/app/views/kaui/tags/edit.html.erb +0 -6
  95. data/app/views/kaui/tags/index.html.erb +0 -25
  96. data/app/views/kaui/tags/new.html.erb +0 -5
  97. data/app/views/kaui/tags/show.html.erb +0 -15
  98. data/test/dummy/log/development.log +0 -99013
  99. data/test/dummy/log/test.log +0 -127459
  100. data/test/dummy/tmp/cache/assets/C94/4E0/sprockets%2Fea1476dc10a3348303f74d111f70441a +0 -0
  101. data/test/dummy/tmp/cache/assets/C95/690/sprockets%2Fc4b083702793f7599f4a3069c50f89a8 +0 -0
  102. data/test/dummy/tmp/cache/assets/CAA/680/sprockets%2F3824d037523f650518fb22acab75559d +0 -0
  103. data/test/dummy/tmp/cache/assets/CC2/520/sprockets%2F9637f46d37325381f96d96d94ae0bc50 +0 -0
  104. data/test/dummy/tmp/cache/assets/CD0/9D0/sprockets%2F5c9508c21501c73fbe00473a09b1f5f4 +0 -0
  105. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  106. data/test/dummy/tmp/cache/assets/CDF/1F0/sprockets%2F76ac5628a0c4d1b976cb622ec4493751 +0 -381
  107. data/test/dummy/tmp/cache/assets/CE0/8A0/sprockets%2Fc18dc7330236e7db17d280973d617b9a +0 -0
  108. data/test/dummy/tmp/cache/assets/CEA/300/sprockets%2Fdf2ad5c9d0990441c2bf59883383d652 +0 -0
  109. data/test/dummy/tmp/cache/assets/CEC/5B0/sprockets%2F1695e8510891108e3950e2a3e4fdf9df +0 -0
  110. data/test/dummy/tmp/cache/assets/CF7/710/sprockets%2F86d43448e1fc383cb6f3d752ef288882 +0 -0
  111. data/test/dummy/tmp/cache/assets/CFF/A00/sprockets%2F642f58fb154eff788f45c881b294e818 +0 -0
  112. data/test/dummy/tmp/cache/assets/D04/1D0/sprockets%2F3baf64d90ead2434455d2296227ba8a2 +0 -7038
  113. data/test/dummy/tmp/cache/assets/D05/510/sprockets%2F1c14866e2401c27b0ff5e33d1b92c4e8 +0 -0
  114. data/test/dummy/tmp/cache/assets/D17/DD0/sprockets%2F665455ecdc7609b23f4ecb366d86055a +0 -9409
  115. data/test/dummy/tmp/cache/assets/D32/200/sprockets%2Ffa467106e01bda5d6246baea72159d64 +0 -0
  116. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  117. data/test/dummy/tmp/cache/assets/D39/5E0/sprockets%2F59fd338be48a81a17a2a785cbd1612b4 +0 -0
  118. data/test/dummy/tmp/cache/assets/D44/170/sprockets%2Fac15571bce3f926a498da7cd09322d97 +0 -0
  119. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  120. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  121. data/test/dummy/tmp/cache/assets/D6C/710/sprockets%2F1765773caead06c0a6a19ea9de2453f7 +0 -0
  122. data/test/dummy/tmp/cache/assets/D76/910/sprockets%2Ff99b4bdc434e11e8634e6af62fe805e0 +0 -0
  123. data/test/dummy/tmp/cache/assets/D79/1E0/sprockets%2F97b08ebe07a73d8195ba124ffb45f98b +0 -7038
  124. data/test/dummy/tmp/cache/assets/D9F/160/sprockets%2F510462e1ebd5dbb7ae20888b77f9bed2 +0 -0
  125. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  126. data/test/dummy/tmp/cache/assets/DDF/650/sprockets%2Fbe16f0bf3d2b7af18010acbd53ba22f5 +0 -0
  127. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  128. data/test/dummy/tmp/cache/assets/E07/1E0/sprockets%2F5a3fe6e98fdf72bbe75c605e54ebc5b0 +0 -9409
  129. data/test/dummy/tmp/cache/assets/E10/BE0/sprockets%2F9c06f8f8da4e736ccf6de8360cd39bfa +0 -0
  130. data/test/dummy/tmp/cache/assets/E20/230/sprockets%2F7d3b1348fdf74cf1b6ba2107fbbac5af +0 -0
  131. data/test/dummy/tmp/cache/assets/E22/F40/sprockets%2Faffacf2e6be325520bd3bfd2096b6dd4 +0 -0
  132. data/test/dummy/tmp/cache/assets/E24/9D0/sprockets%2Fb966ab0a50fda3c156fbad4d8ab73ef6 +0 -381
  133. data/test/functional/kaui/account_emails_controller_test.rb +0 -51
  134. data/test/functional/kaui/tags_controller_test.rb +0 -51
@@ -0,0 +1,1211 @@
1
+ /* =========================================================
2
+ * bootstrap-datepicker.js
3
+ * http://www.eyecon.ro/bootstrap-datepicker
4
+ * =========================================================
5
+ * Copyright 2012 Stefan Petre
6
+ * Improvements by Andrew Rowls
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ * ========================================================= */
20
+
21
+ !function( $ ) {
22
+
23
+ function UTCDate(){
24
+ return new Date(Date.UTC.apply(Date, arguments));
25
+ }
26
+ function UTCToday(){
27
+ var today = new Date();
28
+ return UTCDate(today.getUTCFullYear(), today.getUTCMonth(), today.getUTCDate());
29
+ }
30
+
31
+ // Picker object
32
+
33
+ var Datepicker = function(element, options) {
34
+ var that = this;
35
+
36
+ this.element = $(element);
37
+ this.language = options.language||this.element.data('date-language')||"en";
38
+ this.language = this.language in dates ? this.language : "en";
39
+ this.format = DPGlobal.parseFormat(options.format||this.element.data('date-format')||'mm/dd/yyyy');
40
+ this.picker = $(DPGlobal.template)
41
+ .appendTo('body')
42
+ .on({
43
+ click: $.proxy(this.click, this)
44
+ });
45
+ this.isInput = this.element.is('input');
46
+ this.component = this.element.is('.date') ? this.element.find('.add-on') : false;
47
+ this.hasInput = this.component && this.element.find('input').length;
48
+ if(this.component && this.component.length === 0)
49
+ this.component = false;
50
+
51
+ if (this.isInput) {
52
+ this.element.on({
53
+ focus: $.proxy(this.show, this),
54
+ keyup: $.proxy(this.update, this),
55
+ keydown: $.proxy(this.keydown, this)
56
+ });
57
+ } else {
58
+ if (this.component && this.hasInput){
59
+ // For components that are not readonly, allow keyboard nav
60
+ this.element.find('input').on({
61
+ focus: $.proxy(this.show, this),
62
+ keyup: $.proxy(this.update, this),
63
+ keydown: $.proxy(this.keydown, this)
64
+ });
65
+
66
+ this.component.on('click', $.proxy(this.show, this));
67
+ } else {
68
+ this.element.on('click', $.proxy(this.show, this));
69
+ }
70
+ }
71
+
72
+ $(document).on('mousedown', function (e) {
73
+ // Clicked outside the datepicker, hide it
74
+ if ($(e.target).closest('.datepicker').length == 0) {
75
+ that.hide();
76
+ }
77
+ });
78
+
79
+ this.autoclose = false;
80
+ if ('autoclose' in options) {
81
+ this.autoclose = options.autoclose;
82
+ } else if ('dateAutoclose' in this.element.data()) {
83
+ this.autoclose = this.element.data('date-autoclose');
84
+ }
85
+
86
+ this.keyboardNavigation = true;
87
+ if ('keyboardNavigation' in options) {
88
+ this.keyboardNavigation = options.keyboardNavigation;
89
+ } else if ('dateKeyboardNavigation' in this.element.data()) {
90
+ this.keyboardNavigation = this.element.data('date-keyboard-navigation');
91
+ }
92
+
93
+ switch(options.startView || this.element.data('date-start-view')){
94
+ case 2:
95
+ case 'decade':
96
+ this.viewMode = this.startViewMode = 2;
97
+ break;
98
+ case 1:
99
+ case 'year':
100
+ this.viewMode = this.startViewMode = 1;
101
+ break;
102
+ case 0:
103
+ case 'month':
104
+ default:
105
+ this.viewMode = this.startViewMode = 0;
106
+ break;
107
+ }
108
+
109
+ this.todayBtn = (options.todayBtn||this.element.data('date-today-btn')||false);
110
+ this.todayHighlight = (options.todayHighlight||this.element.data('date-today-highlight')||false);
111
+
112
+ this.weekStart = ((options.weekStart||this.element.data('date-weekstart')||dates[this.language].weekStart||0) % 7);
113
+ this.weekEnd = ((this.weekStart + 6) % 7);
114
+ this.startDate = -Infinity;
115
+ this.endDate = Infinity;
116
+ this.setStartDate(options.startDate||this.element.data('date-startdate'));
117
+ this.setEndDate(options.endDate||this.element.data('date-enddate'));
118
+ this.fillDow();
119
+ this.fillMonths();
120
+ this.update();
121
+ this.showMode();
122
+ };
123
+
124
+ Datepicker.prototype = {
125
+ constructor: Datepicker,
126
+
127
+ show: function(e) {
128
+ this.picker.show();
129
+ this.height = this.component ? this.component.outerHeight() : this.element.outerHeight();
130
+ this.update();
131
+ this.place();
132
+ $(window).on('resize', $.proxy(this.place, this));
133
+ if (e ) {
134
+ e.stopPropagation();
135
+ e.preventDefault();
136
+ }
137
+ this.element.trigger({
138
+ type: 'show',
139
+ date: this.date
140
+ });
141
+ },
142
+
143
+ hide: function(e){
144
+ this.picker.hide();
145
+ $(window).off('resize', this.place);
146
+ this.viewMode = this.startViewMode;
147
+ this.showMode();
148
+ if (!this.isInput) {
149
+ $(document).off('mousedown', this.hide);
150
+ }
151
+ if (e && e.currentTarget.value)
152
+ this.setValue();
153
+ this.element.trigger({
154
+ type: 'hide',
155
+ date: this.date
156
+ });
157
+ },
158
+
159
+ getDate: function() {
160
+ var d = this.getUTCDate();
161
+ return new Date(d.getTime() + (d.getTimezoneOffset()*60000))
162
+ },
163
+
164
+ getUTCDate: function() {
165
+ return this.date;
166
+ },
167
+
168
+ setDate: function(d) {
169
+ this.setUTCDate(new Date(d.getTime() - (d.getTimezoneOffset()*60000)));
170
+ },
171
+
172
+ setUTCDate: function(d) {
173
+ this.date = d;
174
+ this.setValue();
175
+ },
176
+
177
+ setValue: function() {
178
+ var formatted = DPGlobal.formatDate(this.date, this.format, this.language);
179
+ if (!this.isInput) {
180
+ if (this.component){
181
+ this.element.find('input').prop('value', formatted);
182
+ }
183
+ this.element.data('date', formatted);
184
+ } else {
185
+ this.element.prop('value', formatted);
186
+ }
187
+ },
188
+
189
+ setStartDate: function(startDate){
190
+ this.startDate = startDate||-Infinity;
191
+ if (this.startDate !== -Infinity) {
192
+ this.startDate = DPGlobal.parseDate(this.startDate, this.format, this.language);
193
+ }
194
+ this.update();
195
+ this.updateNavArrows();
196
+ },
197
+
198
+ setEndDate: function(endDate){
199
+ this.endDate = endDate||Infinity;
200
+ if (this.endDate !== Infinity) {
201
+ this.endDate = DPGlobal.parseDate(this.endDate, this.format, this.language);
202
+ }
203
+ this.update();
204
+ this.updateNavArrows();
205
+ },
206
+
207
+ place: function(){
208
+ var zIndex = parseInt(this.element.parents().filter(function() {
209
+ return $(this).css('z-index') != 'auto';
210
+ }).first().css('z-index'))+10;
211
+ var offset = this.component ? this.component.offset() : this.element.offset();
212
+ this.picker.css({
213
+ top: offset.top + this.height,
214
+ left: offset.left,
215
+ zIndex: zIndex
216
+ });
217
+ },
218
+
219
+ update: function(){
220
+ this.date = DPGlobal.parseDate(
221
+ this.isInput ? this.element.prop('value') : this.element.data('date') || this.element.find('input').prop('value'),
222
+ this.format, this.language
223
+ );
224
+ if (this.date < this.startDate) {
225
+ this.viewDate = new Date(this.startDate);
226
+ } else if (this.date > this.endDate) {
227
+ this.viewDate = new Date(this.endDate);
228
+ } else {
229
+ this.viewDate = new Date(this.date);
230
+ }
231
+ this.fill();
232
+ },
233
+
234
+ fillDow: function(){
235
+ var dowCnt = this.weekStart;
236
+ var html = '<tr>';
237
+ while (dowCnt < this.weekStart + 7) {
238
+ html += '<th class="dow">'+dates[this.language].daysMin[(dowCnt++)%7]+'</th>';
239
+ }
240
+ html += '</tr>';
241
+ this.picker.find('.datepicker-days thead').append(html);
242
+ },
243
+
244
+ fillMonths: function(){
245
+ var html = '';
246
+ var i = 0
247
+ while (i < 12) {
248
+ html += '<span class="month">'+dates[this.language].monthsShort[i++]+'</span>';
249
+ }
250
+ this.picker.find('.datepicker-months td').html(html);
251
+ },
252
+
253
+ fill: function() {
254
+ var d = new Date(this.viewDate),
255
+ year = d.getUTCFullYear(),
256
+ month = d.getUTCMonth(),
257
+ startYear = this.startDate !== -Infinity ? this.startDate.getUTCFullYear() : -Infinity,
258
+ startMonth = this.startDate !== -Infinity ? this.startDate.getUTCMonth() : -Infinity,
259
+ endYear = this.endDate !== Infinity ? this.endDate.getUTCFullYear() : Infinity,
260
+ endMonth = this.endDate !== Infinity ? this.endDate.getUTCMonth() : Infinity,
261
+ currentDate = this.date.valueOf(),
262
+ today = new Date();
263
+ this.picker.find('.datepicker-days thead th:eq(1)')
264
+ .text(dates[this.language].months[month]+' '+year);
265
+ this.picker.find('tfoot th.today')
266
+ .text(dates[this.language].today)
267
+ .toggle(this.todayBtn);
268
+ this.updateNavArrows();
269
+ this.fillMonths();
270
+ var prevMonth = UTCDate(year, month-1, 28,0,0,0,0),
271
+ day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());
272
+ prevMonth.setUTCDate(day);
273
+ prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.weekStart + 7)%7);
274
+ var nextMonth = new Date(prevMonth);
275
+ nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);
276
+ nextMonth = nextMonth.valueOf();
277
+ var html = [];
278
+ var clsName;
279
+ while(prevMonth.valueOf() < nextMonth) {
280
+ if (prevMonth.getUTCDay() == this.weekStart) {
281
+ html.push('<tr>');
282
+ }
283
+ clsName = '';
284
+ if (prevMonth.getUTCFullYear() < year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() < month)) {
285
+ clsName += ' old';
286
+ } else if (prevMonth.getUTCFullYear() > year || (prevMonth.getUTCFullYear() == year && prevMonth.getUTCMonth() > month)) {
287
+ clsName += ' new';
288
+ }
289
+ // Compare internal UTC date with local today, not UTC today
290
+ if (this.todayHighlight &&
291
+ prevMonth.getUTCFullYear() == today.getFullYear() &&
292
+ prevMonth.getUTCMonth() == today.getMonth() &&
293
+ prevMonth.getUTCDate() == today.getDate()) {
294
+ clsName += ' today';
295
+ }
296
+ if (prevMonth.valueOf() == currentDate) {
297
+ clsName += ' active';
298
+ }
299
+ if (prevMonth.valueOf() < this.startDate || prevMonth.valueOf() > this.endDate) {
300
+ clsName += ' disabled';
301
+ }
302
+ html.push('<td class="day'+clsName+'">'+prevMonth.getUTCDate() + '</td>');
303
+ if (prevMonth.getUTCDay() == this.weekEnd) {
304
+ html.push('</tr>');
305
+ }
306
+ prevMonth.setUTCDate(prevMonth.getUTCDate()+1);
307
+ }
308
+ this.picker.find('.datepicker-days tbody').empty().append(html.join(''));
309
+ var currentYear = this.date.getUTCFullYear();
310
+
311
+ var months = this.picker.find('.datepicker-months')
312
+ .find('th:eq(1)')
313
+ .text(year)
314
+ .end()
315
+ .find('span').removeClass('active');
316
+ if (currentYear == year) {
317
+ months.eq(this.date.getUTCMonth()).addClass('active');
318
+ }
319
+ if (year < startYear || year > endYear) {
320
+ months.addClass('disabled');
321
+ }
322
+ if (year == startYear) {
323
+ months.slice(0, startMonth).addClass('disabled');
324
+ }
325
+ if (year == endYear) {
326
+ months.slice(endMonth+1).addClass('disabled');
327
+ }
328
+
329
+ html = '';
330
+ year = parseInt(year/10, 10) * 10;
331
+ var yearCont = this.picker.find('.datepicker-years')
332
+ .find('th:eq(1)')
333
+ .text(year + '-' + (year + 9))
334
+ .end()
335
+ .find('td');
336
+ year -= 1;
337
+ for (var i = -1; i < 11; i++) {
338
+ html += '<span class="year'+(i == -1 || i == 10 ? ' old' : '')+(currentYear == year ? ' active' : '')+(year < startYear || year > endYear ? ' disabled' : '')+'">'+year+'</span>';
339
+ year += 1;
340
+ }
341
+ yearCont.html(html);
342
+ },
343
+
344
+ updateNavArrows: function() {
345
+ var d = new Date(this.viewDate),
346
+ year = d.getUTCFullYear(),
347
+ month = d.getUTCMonth();
348
+ switch (this.viewMode) {
349
+ case 0:
350
+ if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear() && month <= this.startDate.getUTCMonth()) {
351
+ this.picker.find('.prev').css({visibility: 'hidden'});
352
+ } else {
353
+ this.picker.find('.prev').css({visibility: 'visible'});
354
+ }
355
+ if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear() && month >= this.endDate.getUTCMonth()) {
356
+ this.picker.find('.next').css({visibility: 'hidden'});
357
+ } else {
358
+ this.picker.find('.next').css({visibility: 'visible'});
359
+ }
360
+ break;
361
+ case 1:
362
+ case 2:
363
+ if (this.startDate !== -Infinity && year <= this.startDate.getUTCFullYear()) {
364
+ this.picker.find('.prev').css({visibility: 'hidden'});
365
+ } else {
366
+ this.picker.find('.prev').css({visibility: 'visible'});
367
+ }
368
+ if (this.endDate !== Infinity && year >= this.endDate.getUTCFullYear()) {
369
+ this.picker.find('.next').css({visibility: 'hidden'});
370
+ } else {
371
+ this.picker.find('.next').css({visibility: 'visible'});
372
+ }
373
+ break;
374
+ }
375
+ },
376
+
377
+ click: function(e) {
378
+ e.stopPropagation();
379
+ e.preventDefault();
380
+ var target = $(e.target).closest('span, td, th');
381
+ if (target.length == 1) {
382
+ switch(target[0].nodeName.toLowerCase()) {
383
+ case 'th':
384
+ switch(target[0].className) {
385
+ case 'switch':
386
+ this.showMode(1);
387
+ break;
388
+ case 'prev':
389
+ case 'next':
390
+ var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className == 'prev' ? -1 : 1);
391
+ switch(this.viewMode){
392
+ case 0:
393
+ this.viewDate = this.moveMonth(this.viewDate, dir);
394
+ break;
395
+ case 1:
396
+ case 2:
397
+ this.viewDate = this.moveYear(this.viewDate, dir);
398
+ break;
399
+ }
400
+ this.fill();
401
+ break;
402
+ case 'today':
403
+ var date = new Date();
404
+ date.setUTCHours(0);
405
+ date.setUTCMinutes(0);
406
+ date.setUTCSeconds(0);
407
+ date.setUTCMilliseconds(0);
408
+
409
+ this.showMode(-2);
410
+ var which = this.todayBtn == 'linked' ? null : 'view';
411
+ this._setDate(date, which);
412
+ break;
413
+ }
414
+ break;
415
+ case 'span':
416
+ if (!target.is('.disabled')) {
417
+ this.viewDate.setUTCDate(1);
418
+ if (target.is('.month')) {
419
+ var month = target.parent().find('span').index(target);
420
+ this.viewDate.setUTCMonth(month);
421
+ this.element.trigger({
422
+ type: 'changeMonth',
423
+ date: this.viewDate
424
+ });
425
+ } else {
426
+ var year = parseInt(target.text(), 10)||0;
427
+ this.viewDate.setUTCFullYear(year);
428
+ this.element.trigger({
429
+ type: 'changeYear',
430
+ date: this.viewDate
431
+ });
432
+ }
433
+ this.showMode(-1);
434
+ this.fill();
435
+ }
436
+ break;
437
+ case 'td':
438
+ if (target.is('.day') && !target.is('.disabled')){
439
+ var day = parseInt(target.text(), 10)||1;
440
+ var year = this.viewDate.getUTCFullYear(),
441
+ month = this.viewDate.getUTCMonth();
442
+ if (target.is('.old')) {
443
+ if (month == 0) {
444
+ month = 11;
445
+ year -= 1;
446
+ } else {
447
+ month -= 1;
448
+ }
449
+ } else if (target.is('.new')) {
450
+ if (month == 11) {
451
+ month = 0;
452
+ year += 1;
453
+ } else {
454
+ month += 1;
455
+ }
456
+ }
457
+ this._setDate(UTCDate(year, month, day,0,0,0,0));
458
+ }
459
+ break;
460
+ }
461
+ }
462
+ },
463
+
464
+ _setDate: function(date, which){
465
+ if (!which || which == 'date')
466
+ this.date = date;
467
+ if (!which || which == 'view')
468
+ this.viewDate = date;
469
+ this.fill();
470
+ this.setValue();
471
+ this.element.trigger({
472
+ type: 'changeDate',
473
+ date: this.date
474
+ });
475
+ var element;
476
+ if (this.isInput) {
477
+ element = this.element;
478
+ } else if (this.component){
479
+ element = this.element.find('input');
480
+ }
481
+ if (element) {
482
+ element.change();
483
+ if (this.autoclose) {
484
+ this.hide();
485
+ }
486
+ }
487
+ },
488
+
489
+ moveMonth: function(date, dir){
490
+ if (!dir) return date;
491
+ var new_date = new Date(date.valueOf()),
492
+ day = new_date.getUTCDate(),
493
+ month = new_date.getUTCMonth(),
494
+ mag = Math.abs(dir),
495
+ new_month, test;
496
+ dir = dir > 0 ? 1 : -1;
497
+ if (mag == 1){
498
+ test = dir == -1
499
+ // If going back one month, make sure month is not current month
500
+ // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)
501
+ ? function(){ return new_date.getUTCMonth() == month; }
502
+ // If going forward one month, make sure month is as expected
503
+ // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)
504
+ : function(){ return new_date.getUTCMonth() != new_month; };
505
+ new_month = month + dir;
506
+ new_date.setUTCMonth(new_month);
507
+ // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11
508
+ if (new_month < 0 || new_month > 11)
509
+ new_month = (new_month + 12) % 12;
510
+ } else {
511
+ // For magnitudes >1, move one month at a time...
512
+ for (var i=0; i<mag; i++)
513
+ // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...
514
+ new_date = this.moveMonth(new_date, dir);
515
+ // ...then reset the day, keeping it in the new month
516
+ new_month = new_date.getUTCMonth();
517
+ new_date.setUTCDate(day);
518
+ test = function(){ return new_month != new_date.getUTCMonth(); };
519
+ }
520
+ // Common date-resetting loop -- if date is beyond end of month, make it
521
+ // end of month
522
+ while (test()){
523
+ new_date.setUTCDate(--day);
524
+ new_date.setUTCMonth(new_month);
525
+ }
526
+ return new_date;
527
+ },
528
+
529
+ moveYear: function(date, dir){
530
+ return this.moveMonth(date, dir*12);
531
+ },
532
+
533
+ dateWithinRange: function(date){
534
+ return date >= this.startDate && date <= this.endDate;
535
+ },
536
+
537
+ keydown: function(e){
538
+ if (this.picker.is(':not(:visible)')){
539
+ if (e.keyCode == 27) // allow escape to hide and re-show picker
540
+ this.show();
541
+ return;
542
+ }
543
+ var dateChanged = false,
544
+ dir, day, month,
545
+ newDate, newViewDate;
546
+ switch(e.keyCode){
547
+ case 27: // escape
548
+ this.hide();
549
+ e.preventDefault();
550
+ break;
551
+ case 37: // left
552
+ case 39: // right
553
+ if (!this.keyboardNavigation) break;
554
+ dir = e.keyCode == 37 ? -1 : 1;
555
+ if (e.ctrlKey){
556
+ newDate = this.moveYear(this.date, dir);
557
+ newViewDate = this.moveYear(this.viewDate, dir);
558
+ } else if (e.shiftKey){
559
+ newDate = this.moveMonth(this.date, dir);
560
+ newViewDate = this.moveMonth(this.viewDate, dir);
561
+ } else {
562
+ newDate = new Date(this.date);
563
+ newDate.setUTCDate(this.date.getUTCDate() + dir);
564
+ newViewDate = new Date(this.viewDate);
565
+ newViewDate.setUTCDate(this.viewDate.getUTCDate() + dir);
566
+ }
567
+ if (this.dateWithinRange(newDate)){
568
+ this.date = newDate;
569
+ this.viewDate = newViewDate;
570
+ this.setValue();
571
+ this.update();
572
+ e.preventDefault();
573
+ dateChanged = true;
574
+ }
575
+ break;
576
+ case 38: // up
577
+ case 40: // down
578
+ if (!this.keyboardNavigation) break;
579
+ dir = e.keyCode == 38 ? -1 : 1;
580
+ if (e.ctrlKey){
581
+ newDate = this.moveYear(this.date, dir);
582
+ newViewDate = this.moveYear(this.viewDate, dir);
583
+ } else if (e.shiftKey){
584
+ newDate = this.moveMonth(this.date, dir);
585
+ newViewDate = this.moveMonth(this.viewDate, dir);
586
+ } else {
587
+ newDate = new Date(this.date);
588
+ newDate.setUTCDate(this.date.getUTCDate() + dir * 7);
589
+ newViewDate = new Date(this.viewDate);
590
+ newViewDate.setUTCDate(this.viewDate.getUTCDate() + dir * 7);
591
+ }
592
+ if (this.dateWithinRange(newDate)){
593
+ this.date = newDate;
594
+ this.viewDate = newViewDate;
595
+ this.setValue();
596
+ this.update();
597
+ e.preventDefault();
598
+ dateChanged = true;
599
+ }
600
+ break;
601
+ case 13: // enter
602
+ this.hide();
603
+ e.preventDefault();
604
+ break;
605
+ case 9: // tab
606
+ this.hide();
607
+ break;
608
+ }
609
+ if (dateChanged){
610
+ this.element.trigger({
611
+ type: 'changeDate',
612
+ date: this.date
613
+ });
614
+ var element;
615
+ if (this.isInput) {
616
+ element = this.element;
617
+ } else if (this.component){
618
+ element = this.element.find('input');
619
+ }
620
+ if (element) {
621
+ element.change();
622
+ }
623
+ }
624
+ },
625
+
626
+ showMode: function(dir) {
627
+ if (dir) {
628
+ this.viewMode = Math.max(0, Math.min(2, this.viewMode + dir));
629
+ }
630
+ this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();
631
+ this.updateNavArrows();
632
+ }
633
+ };
634
+
635
+ $.fn.datepicker = function ( option ) {
636
+ var args = Array.apply(null, arguments);
637
+ args.shift();
638
+ return this.each(function () {
639
+ var $this = $(this),
640
+ data = $this.data('datepicker'),
641
+ options = typeof option == 'object' && option;
642
+ if (!data) {
643
+ $this.data('datepicker', (data = new Datepicker(this, $.extend({}, $.fn.datepicker.defaults,options))));
644
+ }
645
+ if (typeof option == 'string' && typeof data[option] == 'function') {
646
+ data[option].apply(data, args);
647
+ }
648
+ });
649
+ };
650
+
651
+ $.fn.datepicker.defaults = {
652
+ };
653
+ $.fn.datepicker.Constructor = Datepicker;
654
+ var dates = $.fn.datepicker.dates = {
655
+ en: {
656
+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
657
+ daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
658
+ daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
659
+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
660
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
661
+ today: "Today"
662
+ }
663
+ }
664
+
665
+ var DPGlobal = {
666
+ modes: [
667
+ {
668
+ clsName: 'days',
669
+ navFnc: 'Month',
670
+ navStep: 1
671
+ },
672
+ {
673
+ clsName: 'months',
674
+ navFnc: 'FullYear',
675
+ navStep: 1
676
+ },
677
+ {
678
+ clsName: 'years',
679
+ navFnc: 'FullYear',
680
+ navStep: 10
681
+ }],
682
+ isLeapYear: function (year) {
683
+ return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0))
684
+ },
685
+ getDaysInMonth: function (year, month) {
686
+ return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]
687
+ },
688
+ validParts: /dd?|mm?|MM?|yy(?:yy)?/g,
689
+ nonpunctuation: /[^ -\/:-@\[-`{-~\t\n\r]+/g,
690
+ parseFormat: function(format){
691
+ // IE treats \0 as a string end in inputs (truncating the value),
692
+ // so it's a bad format delimiter, anyway
693
+ var separators = format.replace(this.validParts, '\0').split('\0'),
694
+ parts = format.match(this.validParts);
695
+ if (!separators || !separators.length || !parts || parts.length == 0){
696
+ throw new Error("Invalid date format.");
697
+ }
698
+ return {separators: separators, parts: parts};
699
+ },
700
+ parseDate: function(date, format, language) {
701
+ if (date instanceof Date) return date;
702
+ if (/^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(date)) {
703
+ var part_re = /([-+]\d+)([dmwy])/,
704
+ parts = date.match(/([-+]\d+)([dmwy])/g),
705
+ part, dir;
706
+ date = new Date();
707
+ for (var i=0; i<parts.length; i++) {
708
+ part = part_re.exec(parts[i]);
709
+ dir = parseInt(part[1]);
710
+ switch(part[2]){
711
+ case 'd':
712
+ date.setUTCDate(date.getUTCDate() + dir);
713
+ break;
714
+ case 'm':
715
+ date = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir);
716
+ break;
717
+ case 'w':
718
+ date.setUTCDate(date.getUTCDate() + dir * 7);
719
+ break;
720
+ case 'y':
721
+ date = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir);
722
+ break;
723
+ }
724
+ }
725
+ return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);
726
+ }
727
+ var parts = date && date.match(this.nonpunctuation) || [],
728
+ date = new Date(),
729
+ parsed = {},
730
+ setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],
731
+ setters_map = {
732
+ yyyy: function(d,v){ return d.setUTCFullYear(v); },
733
+ yy: function(d,v){ return d.setUTCFullYear(2000+v); },
734
+ m: function(d,v){
735
+ v -= 1;
736
+ while (v<0) v += 12;
737
+ v %= 12;
738
+ d.setUTCMonth(v);
739
+ while (d.getUTCMonth() != v)
740
+ d.setUTCDate(d.getUTCDate()-1);
741
+ return d;
742
+ },
743
+ d: function(d,v){ return d.setUTCDate(v); }
744
+ },
745
+ val, filtered, part;
746
+ setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
747
+ setters_map['dd'] = setters_map['d'];
748
+ date = UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);
749
+ if (parts.length == format.parts.length) {
750
+ for (var i=0, cnt = format.parts.length; i < cnt; i++) {
751
+ val = parseInt(parts[i], 10);
752
+ part = format.parts[i];
753
+ if (isNaN(val)) {
754
+ switch(part) {
755
+ case 'MM':
756
+ filtered = $(dates[language].months).filter(function(){
757
+ var m = this.slice(0, parts[i].length),
758
+ p = parts[i].slice(0, m.length);
759
+ return m == p;
760
+ });
761
+ val = $.inArray(filtered[0], dates[language].months) + 1;
762
+ break;
763
+ case 'M':
764
+ filtered = $(dates[language].monthsShort).filter(function(){
765
+ var m = this.slice(0, parts[i].length),
766
+ p = parts[i].slice(0, m.length);
767
+ return m == p;
768
+ });
769
+ val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
770
+ break;
771
+ }
772
+ }
773
+ parsed[part] = val;
774
+ }
775
+ for (var i=0, s; i<setters_order.length; i++){
776
+ s = setters_order[i];
777
+ if (s in parsed)
778
+ setters_map[s](date, parsed[s])
779
+ }
780
+ }
781
+ return date;
782
+ },
783
+ formatDate: function(date, format, language){
784
+ var val = {
785
+ d: date.getUTCDate(),
786
+ m: date.getUTCMonth() + 1,
787
+ M: dates[language].monthsShort[date.getUTCMonth()],
788
+ MM: dates[language].months[date.getUTCMonth()],
789
+ yy: date.getUTCFullYear().toString().substring(2),
790
+ yyyy: date.getUTCFullYear()
791
+ };
792
+ val.dd = (val.d < 10 ? '0' : '') + val.d;
793
+ val.mm = (val.m < 10 ? '0' : '') + val.m;
794
+ var date = [],
795
+ seps = $.extend([], format.separators);
796
+ for (var i=0, cnt = format.parts.length; i < cnt; i++) {
797
+ if (seps.length)
798
+ date.push(seps.shift())
799
+ date.push(val[format.parts[i]]);
800
+ }
801
+ return date.join('');
802
+ },
803
+ headTemplate: '<thead>'+
804
+ '<tr>'+
805
+ '<th class="prev"><i class="icon-arrow-left"/></th>'+
806
+ '<th colspan="5" class="switch"></th>'+
807
+ '<th class="next"><i class="icon-arrow-right"/></th>'+
808
+ '</tr>'+
809
+ '</thead>',
810
+ contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
811
+ footTemplate: '<tfoot><tr><th colspan="7" class="today"></th></tr></tfoot>'
812
+ };
813
+ DPGlobal.template = '<div class="datepicker dropdown-menu">'+
814
+ '<div class="datepicker-days">'+
815
+ '<table class=" table-condensed">'+
816
+ DPGlobal.headTemplate+
817
+ '<tbody></tbody>'+
818
+ DPGlobal.footTemplate+
819
+ '</table>'+
820
+ '</div>'+
821
+ '<div class="datepicker-months">'+
822
+ '<table class="table-condensed">'+
823
+ DPGlobal.headTemplate+
824
+ DPGlobal.contTemplate+
825
+ DPGlobal.footTemplate+
826
+ '</table>'+
827
+ '</div>'+
828
+ '<div class="datepicker-years">'+
829
+ '<table class="table-condensed">'+
830
+ DPGlobal.headTemplate+
831
+ DPGlobal.contTemplate+
832
+ DPGlobal.footTemplate+
833
+ '</table>'+
834
+ '</div>'+
835
+ '</div>';
836
+ }( window.jQuery );
837
+ /**
838
+ * Bulgarian translation for bootstrap-datepicker
839
+ * Apostol Apostolov <apostol.s.apostolov@gmail.com>
840
+ */
841
+ ;(function($){
842
+ $.fn.datepicker.dates['bg'] = {
843
+ days: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота", "Неделя"],
844
+ daysShort: ["Нед", "Пон", "Вто", "Сря", "Чет", "Пет", "Съб", "Нед"],
845
+ daysMin: ["Н", "П", "В", "С", "Ч", "П", "С", "Н"],
846
+ months: ["Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"],
847
+ monthsShort: ["Ян", "Фев", "Мар", "Апр", "Май", "Юни", "Юли", "Авг", "Сеп", "Окт", "Ное", "Дек"],
848
+ today: "днес"
849
+ };
850
+ }(jQuery));
851
+ /**
852
+ * Czech translation for bootstrap-datepicker
853
+ * Matěj Koubík <matej@koubik.name>
854
+ */
855
+ ;(function($){
856
+ $.fn.datepicker.dates['cs'] = {
857
+ days: ["Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota", "Neděle"],
858
+ daysShort: ["Ne", "Po", "Út", "St", "Čt", "Pá", "So", "Ne"],
859
+ daysMin: ["N", "P", "Ú", "St", "Č", "P", "So", "N"],
860
+ months: ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"],
861
+ monthsShort: ["Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čnc", "Srp", "Zář", "Říj", "Lis", "Pro"],
862
+ today: "Dnes"
863
+ };
864
+ }(jQuery));
865
+ /**
866
+ * Danish translation for bootstrap-datepicker
867
+ * Christian Pedersen <http://github.com/chripede>
868
+ */
869
+ ;(function($){
870
+ $.fn.datepicker.dates['da'] = {
871
+ days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"],
872
+ daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"],
873
+ daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"],
874
+ months: ["Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"],
875
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
876
+ today: "I Dag"
877
+ };
878
+ }(jQuery));/**
879
+ * German translation for bootstrap-datepicker
880
+ * Sam Zurcher <sam@orelias.ch>
881
+ */
882
+ ;(function($){
883
+ $.fn.datepicker.dates['de'] = {
884
+ days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"],
885
+ daysShort: ["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam", "Son"],
886
+ daysMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"],
887
+ months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
888
+ monthsShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
889
+ today: "Heute"
890
+ };
891
+ }(jQuery));
892
+ /**
893
+ * Spanish translation for bootstrap-datepicker
894
+ * Bruno Bonamin <bruno.bonamin@gmail.com>
895
+ */
896
+ ;(function($){
897
+ $.fn.datepicker.dates['es'] = {
898
+ days: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"],
899
+ daysShort: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb", "Dom"],
900
+ daysMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa", "Do"],
901
+ months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
902
+ monthsShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"],
903
+ today: "Hoy"
904
+ };
905
+ }(jQuery));
906
+ /**
907
+ * Finnish translation for bootstrap-datepicker
908
+ * Jaakko Salonen <https://github.com/jsalonen>
909
+ */
910
+ ;(function($){
911
+ $.fn.datepicker.dates['fi'] = {
912
+ days: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai", "sunnuntai"],
913
+ daysShort: ["sun", "maa", "tii", "kes", "tor", "per", "lau", "sun"],
914
+ daysMin: ["su", "ma", "ti", "ke", "to", "pe", "la", "su"],
915
+ months: ["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kesäkuu", "heinäkuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"],
916
+ monthsShort: ["tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mar", "jou"],
917
+ today: "tänään"
918
+ };
919
+ }(jQuery));
920
+ /**
921
+ * French translation for bootstrap-datepicker
922
+ * Nico Mollet <nico.mollet@gmail.com>
923
+ */
924
+ ;(function($){
925
+ $.fn.datepicker.dates['fr'] = {
926
+ days: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"],
927
+ daysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", "Dim"],
928
+ daysMin: ["D", "L", "Ma", "Me", "J", "V", "S", "D"],
929
+ months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
930
+ monthsShort: ["Jan", "Fev", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Dec"],
931
+ today: "Aujourd'hui"
932
+ };
933
+ }(jQuery));
934
+ /**
935
+ * Bahasa translation for bootstrap-datepicker
936
+ * Azwar Akbar <azwar.akbar@gmail.com>
937
+ */
938
+ ;(function($){
939
+ $.fn.datepicker.dates['id'] = {
940
+ days: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"],
941
+ daysShort: ["Mgu", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab", "Mgu"],
942
+ daysMin: ["Mg", "Sn", "Sl", "Ra", "Ka", "Ju", "Sa", "Mg"],
943
+ months: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"],
944
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ags", "Sep", "Okt", "Nov", "Des"]
945
+ };
946
+ }(jQuery));
947
+ /**
948
+ * Icelandic translation for bootstrap-datepicker
949
+ * Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
950
+ */
951
+ ;(function($){
952
+ $.fn.datepicker.dates['is'] = {
953
+ days: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur", "Sunnudagur"],
954
+ daysShort: ["Sun", "Mán", "Þri", "Mið", "Fim", "Fös", "Lau", "Sun"],
955
+ daysMin: ["Su", "Má", "Þr", "Mi", "Fi", "Fö", "La", "Su"],
956
+ months: ["Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"],
957
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maí", "Jún", "Júl", "Ágú", "Sep", "Okt", "Nóv", "Des"],
958
+ today: "Í Dag"
959
+ };
960
+ }(jQuery));
961
+ /**
962
+ * Italian translation for bootstrap-datepicker
963
+ * Enrico Rubboli <rubboli@gmail.com>
964
+ */
965
+ ;(function($){
966
+ $.fn.datepicker.dates['it'] = {
967
+ days: ["Domenica", "Lunedi", "Martedi", "Mercoledi", "Giovedi", "Venerdi", "Sabato", "Domenica"],
968
+ daysShort: ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"],
969
+ daysMin: ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa", "Do"],
970
+ months: ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"],
971
+ monthsShort: ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"],
972
+ today: "Oggi"
973
+ };
974
+ }(jQuery));
975
+ /**
976
+ * Japanese translation for bootstrap-datepicker
977
+ * Norio Suzuki <https://github.com/suzuki/>
978
+ */
979
+ ;(function($){
980
+ $.fn.datepicker.dates['ja'] = {
981
+ days: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜"],
982
+ daysShort: ["日", "月", "火", "水", "木", "金", "土", "日"],
983
+ daysMin: ["日", "月", "火", "水", "木", "金", "土", "日"],
984
+ months: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
985
+ monthsShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]
986
+ };
987
+ }(jQuery));
988
+ /**
989
+ * Korean translation for bootstrap-datepicker
990
+ * Gu Youn <http://github.com/guyoun>
991
+ */
992
+ ;(function($){
993
+ $.fn.datepicker.dates['kr'] = {
994
+ days: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"],
995
+ daysShort: ["일", "월", "화", "수", "목", "금", "토", "일"],
996
+ daysMin: ["일", "월", "화", "수", "목", "금", "토", "일"],
997
+ months: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
998
+ monthsShort: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
999
+ };
1000
+ }(jQuery));
1001
+ /**
1002
+ * Lithuanian translation for bootstrap-datepicker
1003
+ * Šarūnas Gliebus <ssharunas@yahoo.co.uk>
1004
+ */
1005
+
1006
+ ;(function($){
1007
+ $.fn.datepicker.dates['lt'] = {
1008
+ days: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis", "Sekmadienis"],
1009
+ daysShort: ["S", "Pr", "A", "T", "K", "Pn", "Š", "S"],
1010
+ daysMin: ["Sk", "Pr", "An", "Tr", "Ke", "Pn", "Št", "Sk"],
1011
+ months: ["Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", "Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"],
1012
+ monthsShort: ["Sau", "Vas", "Kov", "Bal", "Geg", "Bir", "Lie", "Rugp", "Rugs", "Spa", "Lap", "Gru"],
1013
+ weekStart: 1
1014
+ };
1015
+ }(jQuery));
1016
+ /**
1017
+ * Latvian translation for bootstrap-datepicker
1018
+ * Artis Avotins <artis@apit.lv>
1019
+ */
1020
+
1021
+ ;(function($){
1022
+ $.fn.datepicker.dates['lv'] = {
1023
+ days: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena", "Svētdiena"],
1024
+ daysShort: ["Sv", "P", "O", "T", "C", "Pk", "S", "Sv"],
1025
+ daysMin: ["Sv", "Pr", "Ot", "Tr", "Ce", "Pk", "St", "Sv"],
1026
+ months: ["Janvāris", "Februāris", "Marts", "Aprīlis", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"],
1027
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jūn", "Jūl", "Aug", "Sep", "Okt", "Nov", "Dec."],
1028
+ today: "Šodien",
1029
+ weekStart: 1
1030
+ };
1031
+ }(jQuery));/**
1032
+ * Malay translation for bootstrap-datepicker
1033
+ * Ateman Faiz <noorulfaiz@gmail.com>
1034
+ */
1035
+ ;(function($){
1036
+ $.fn.datepicker.dates['ms'] = {
1037
+ days: ["Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu", "Ahad"],
1038
+ daysShort: ["Aha", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab", "Aha"],
1039
+ daysMin: ["Ah", "Is", "Se", "Ra", "Kh", "Ju", "Sa", "Ah"],
1040
+ months: ["Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember"],
1041
+ // Pierre - added missing ,
1042
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Ogo", "Sep", "Okt", "Nov", "Dis"],
1043
+ today: "Hari Ini"
1044
+ };
1045
+ }(jQuery));
1046
+ /**
1047
+ * Norwegian (bokmål) translation for bootstrap-datepicker
1048
+ * Fredrik Sundmyhr <http://github.com/fsundmyhr>
1049
+ */
1050
+ ;(function($){
1051
+ $.fn.datepicker.dates['nb'] = {
1052
+ days: ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"],
1053
+ daysShort: ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør", "Søn"],
1054
+ daysMin: ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø", "Sø"],
1055
+ months: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"],
1056
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"],
1057
+ today: "I Dag"
1058
+ };
1059
+ }(jQuery));/**
1060
+ * Dutch translation for bootstrap-datepicker
1061
+ * Reinier Goltstein <mrgoltstein@gmail.com>
1062
+ */
1063
+ ;(function($){
1064
+ $.fn.datepicker.dates['nl'] = {
1065
+ days: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag", "Zondag"],
1066
+ daysShort: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"],
1067
+ daysMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za", "Zo"],
1068
+ months: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
1069
+ monthsShort: ["Jan", "Feb", "Mrt", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
1070
+ today: "Vandaag"
1071
+ };
1072
+ }(jQuery));
1073
+ /**
1074
+ * Polish translation for bootstrap-datepicker
1075
+ * Robert <rtpm@gazeta.pl>
1076
+ */
1077
+ ;(function($){
1078
+ $.fn.datepicker.dates['pl'] = {
1079
+ days: ["Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"],
1080
+ daysShort: ["Nie", "Pn", "Wt", "Śr", "Czw", "Pt", "So", "Nie"],
1081
+ daysMin: ["N", "Pn", "Wt", "Śr", "Cz", "Pt", "So", "N"],
1082
+ months: ["Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"],
1083
+ monthsShort: ["Sty", "Lu", "Mar", "Kw", "Maj", "Cze", "Lip", "Sie", "Wrz", "Pa", "Lis", "Gru"],
1084
+ today: "Dzisiaj"
1085
+ };
1086
+ }(jQuery));
1087
+ /**
1088
+ * Brazilian translation for bootstrap-datepicker
1089
+ * Cauan Cabral <cauan@radig.com.br>
1090
+ */
1091
+ ;(function($){
1092
+ $.fn.datepicker.dates['pt-BR'] = {
1093
+ days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"],
1094
+ daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"],
1095
+ daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"],
1096
+ months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
1097
+ monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
1098
+ today: "Hoje"
1099
+ };
1100
+ }(jQuery));
1101
+ /**
1102
+ * Portuguese translation for bootstrap-datepicker
1103
+ * Original code: Cauan Cabral <cauan@radig.com.br>
1104
+ * Tiago Melo <tiago.blackcode@gmail.com>
1105
+ */
1106
+ ;(function($){
1107
+ $.fn.datepicker.dates['pt'] = {
1108
+ days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"],
1109
+ daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb", "Dom"],
1110
+ daysMin: ["Do", "Se", "Te", "Qu", "Qu", "Se", "Sa", "Do"],
1111
+ months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
1112
+ monthsShort: ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"]
1113
+ };
1114
+ }(jQuery));
1115
+ /**
1116
+ * Russian translation for bootstrap-datepicker
1117
+ * Victor Taranenko <darwin@snowdale.com>
1118
+ */
1119
+ ;(function($){
1120
+ $.fn.datepicker.dates['ru'] = {
1121
+ days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"],
1122
+ daysShort: ["Вск", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Суб", "Вск"],
1123
+ daysMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"],
1124
+ months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
1125
+ monthsShort: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"],
1126
+ today: "Сегодня"
1127
+ };
1128
+ }(jQuery));/**
1129
+ * Slovene translation for bootstrap-datepicker
1130
+ * Gregor Rudolf <gregor.rudolf@gmail.com>
1131
+ */
1132
+ ;(function($){
1133
+ $.fn.datepicker.dates['sl'] = {
1134
+ days: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota", "Nedelja"],
1135
+ daysShort: ["Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob", "Ned"],
1136
+ daysMin: ["Ne", "Po", "To", "Sr", "Če", "Pe", "So", "Ne"],
1137
+ months: ["Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"],
1138
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"],
1139
+ today: "Danes"
1140
+ };
1141
+ }(jQuery));
1142
+ /**
1143
+ * Swedish translation for bootstrap-datepicker
1144
+ * Patrik Ragnarsson <patrik@starkast.net>
1145
+ */
1146
+ ;(function($){
1147
+ $.fn.datepicker.dates['sv'] = {
1148
+ days: ["Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag", "Söndag"],
1149
+ daysShort: ["Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör", "Sön"],
1150
+ daysMin: ["Sö", "Må", "Ti", "On", "To", "Fr", "Lö", "Sö"],
1151
+ months: ["Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"],
1152
+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
1153
+ today: "I Dag"
1154
+ };
1155
+ }(jQuery));
1156
+ /**
1157
+ * Thai translation for bootstrap-datepicker
1158
+ * Suchau Jiraprapot <seroz24@gmail.com>
1159
+ */
1160
+ ;(function($){
1161
+ $.fn.datepicker.dates['th'] = {
1162
+ days: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"],
1163
+ daysShort: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"],
1164
+ daysMin: ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"],
1165
+ months: ["มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม"],
1166
+ monthsShort: ["ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."],
1167
+ today: "วันนี้"
1168
+ };
1169
+ }(jQuery));
1170
+ /**
1171
+ * Turkish translation for bootstrap-datepicker
1172
+ * Serkan Algur <kaisercrazy_2@hotmail.com>
1173
+ */
1174
+ ;(function($){
1175
+ $.fn.datepicker.dates['tr'] = {
1176
+ days: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar"],
1177
+ daysShort: ["Pz", "Pzt", "Sal", "Çrş", "Prş", "Cu", "Cts", "Pz"],
1178
+ daysMin: ["Pz", "Pzt", "Sa", "Çr", "Pr", "Cu", "Ct", "Pz"],
1179
+ months: ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"],
1180
+ monthsShort: ["Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara"],
1181
+ today: "Bugün"
1182
+ };
1183
+ }(jQuery));
1184
+
1185
+ /**
1186
+ * Simplified Chinese translation for bootstrap-datepicker
1187
+ * Yuan Cheung <advanimal@gmail.com>
1188
+ */
1189
+ ;(function($){
1190
+ $.fn.datepicker.dates['zh-CN'] = {
1191
+ days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"],
1192
+ daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"],
1193
+ daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"],
1194
+ months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
1195
+ monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
1196
+ today: "今日"
1197
+ };
1198
+ }(jQuery));
1199
+ /**
1200
+ * Traditional Chinese translation for bootstrap-datepicker
1201
+ * Rung-Sheng Jang <daniel@i-trend.co.cc>
1202
+ */
1203
+ ;(function($){
1204
+ $.fn.datepicker.dates['zh-TW'] = {
1205
+ days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"],
1206
+ daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"],
1207
+ daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"],
1208
+ months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
1209
+ monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
1210
+ };
1211
+ }(jQuery));