diff --git a/Gruntfile.js b/Gruntfile.js
index 65453e4..48f326f 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -107,8 +107,8 @@ module.exports = function(grunt) {
options: {
specs: 'test/*_spec.js',
vendor: [
- 'http://code.jquery.com/jquery-1.10.1.min.js',
- 'http://code.jquery.com/ui/1.10.3/jquery-ui.min.js',
+ 'http://code.jquery.com/jquery-1.11.1.min.js',
+ 'http://code.jquery.com/ui/1.11.1/jquery-ui.min.js',
'http://github.com/searls/jasmine-fixture/releases/1.0.5/1737/jasmine-fixture.js'
]
}
@@ -162,6 +162,9 @@ module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib-watch');
// Default task.
- grunt.registerTask('default', ['jshint', 'jasmine', 'clean', 'copy', 'concat', 'replace', 'uglify', 'cssmin']);
+ grunt.registerTask('default', ['clean', 'copy', 'concat', 'replace', 'uglify', 'cssmin']);
+
+ // Test task.
+ grunt.registerTask('test', ['jshint', 'jasmine']);
};
diff --git a/README.md b/README.md
index 7e9adac..31e84ae 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,12 @@ jQuery Timepicker Addon
About
-----
+
+**This project is no longer actively maintained.** Unfortuantely, I no longer work with jQuery and jQueryUI on new projects. jQuery Timepicker Addon served as the timepicker of choice for many years when there weren't many available. I'm thankful of the opportunity to contribute to the community, and thankful to everyone who contributed along the way. These days there are many great alternatives depending on the environment you're developing in. If you need a timepicker with no dependencies check out [flatpickr](https://flatpickr.js.org/).
+
+Best wishes,
+Trent Richardson
+
- Author: [Trent Richardson](http://trentrichardson.com)
- Documentation: [http://trentrichardson.com/examples/timepicker/](http://trentrichardson.com/examples/timepicker/)
- Twitter: [@practicalweb](http://twitter.com/practicalweb)
@@ -12,11 +18,30 @@ Use
I recommend getting the eBook [Handling Time](https://sellfy.com/p/8gxZ) as it has a lot of example code to get started. The quick and dirty:
- To use this plugin you must include jQuery (1.6+) and jQuery UI with datepicker (and optionally slider).
-- Include timepicker-addon script located in the `dist` directory.
+- Include timepicker-addon script and css located in the `dist` directory or from a CDN:
+ * [http://cdnjs.com/libraries/jquery-ui-timepicker-addon](http://cdnjs.com/libraries/jquery-ui-timepicker-addon)
+ * [http://www.jsdelivr.com/#!jquery.ui.timepicker.addon](http://www.jsdelivr.com/#!jquery.ui.timepicker.addon)
- now use timepicker with `$('#selector').datetimepicker()` or `$('#selector').timepicker()`.
There is also a [Bower](http://bower.io/) package named `jqueryui-timepicker-addon`. Beware there are other similar package names that point to forks which may not be current.
+Rails with Bower
+-----------------
+If you happen to use Rails with the [bower](gem "bower-rails", "~> 0.8.3") gem, here it is to use it easily :
+#### Bowerfile
+```asset "jqueryui-timepicker-addon", "1.5.6"```
+
+#### application.js
+```javascript
+//= require jqueryui-timepicker-addon/dist/jquery-ui-timepicker-addon
+//= require jqueryui-timepicker-addon/dist/i18n/jquery-ui-timepicker-fr
+```
+
+#### application.css.scss
+```scss
+@import "jqueryui-timepicker-addon/dist/jquery-ui-timepicker-addon.css";
+```
+
Contributing Code - Please Read!
--------------------------------
- All code contributions and bug reports are much appreciated.
@@ -24,4 +49,4 @@ Contributing Code - Please Read!
- Also note tabs are appreciated over spaces.
- Please read the [CONTRIBUTING.md][contributingmd] for more on using Grunt to produce builds.
-[contributingmd]: CONTRIBUTING.md
\ No newline at end of file
+[contributingmd]: CONTRIBUTING.md
diff --git a/bower.json b/bower.json
index 9376114..3c1e1ea 100644
--- a/bower.json
+++ b/bower.json
@@ -1,11 +1,21 @@
{
"name": "jqueryui-timepicker-addon",
- "version": "1.4.4",
"repository": {
"type": "git",
"url": "git://github.com/trentrichardson/jQuery-Timepicker-Addon.git"
},
+ "main": ["dist/jquery-ui-timepicker-addon.js", "dist/jquery-ui-timepicker-addon.css"],
+ "ignore": [
+ "/CONTRIBUTING.md",
+ "/Gruntfile.js",
+ "/README.md",
+ "/composer.json",
+ "/jquery-ui-timepicker-addon.json",
+ "/lib",
+ "/package.json",
+ "/src",
+ "/test"
+ ],
"dependencies": {
- "jquery-ui": ">=1.9.2"
}
}
\ No newline at end of file
diff --git a/dist/i18n/jquery-ui-timepicker-addon-i18n.js b/dist/i18n/jquery-ui-timepicker-addon-i18n.js
index 75e3d75..3ced863 100644
--- a/dist/i18n/jquery-ui-timepicker-addon-i18n.js
+++ b/dist/i18n/jquery-ui-timepicker-addon-i18n.js
@@ -1,34 +1,35 @@
-/*! jQuery Timepicker Addon - v1.4.5 - 2014-05-26
+/*! jQuery Timepicker Addon - v1.6.3 - 2016-04-20
* http://trentrichardson.com/examples/timepicker
-* Copyright (c) 2014 Trent Richardson; Licensed MIT */
+* Copyright (c) 2016 Trent Richardson; Licensed MIT */
(function($){
-/* Afrikaans translation for the jQuery Timepicker Addon */
-/* Written by Deon Heyns */
-(function($) {
- $.timepicker.regional['af'] = {
- timeOnlyTitle: 'Kies Tyd',
- timeText: 'Tyd ',
- hourText: 'Ure ',
- minuteText: 'Minute',
- secondText: 'Sekondes',
- millisecText: 'Millisekondes',
- microsecText: 'Mikrosekondes',
- timezoneText: 'Tydsone',
- currentText: 'Huidige Tyd',
- closeText: 'Klaar',
- timeFormat: 'HH:mm',
- amNames: ['AM', 'A'],
- pmNames: ['PM', 'P'],
- isRTL: false
- };
- $.timepicker.setDefaults($.timepicker.regional['af']);
-})(jQuery);
-
+// source: src/i18n/jquery-ui-timepicker-af.js
+/* Afrikaans translation for the jQuery Timepicker Addon */
+/* Written by Deon Heyns */
+
+ $.timepicker.regional['af'] = {
+ timeOnlyTitle: 'Kies Tyd',
+ timeText: 'Tyd ',
+ hourText: 'Ure ',
+ minuteText: 'Minute',
+ secondText: 'Sekondes',
+ millisecText: 'Millisekondes',
+ microsecText: 'Mikrosekondes',
+ timezoneText: 'Tydsone',
+ currentText: 'Huidige Tyd',
+ closeText: 'Klaar',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['AM', 'A'],
+ pmNames: ['PM', 'P'],
+ isRTL: false
+ };
+
+// source: src/i18n/jquery-ui-timepicker-am.js
/* Armenian translation for the jQuery Timepicker Addon */
/* Written by Artavazd Avetisyan artavazda@hotmail.com */
-(function($) {
+
$.timepicker.regional['am'] = {
timeOnlyTitle: 'Ընտրեք ժամանակը',
timeText: 'Ժամանակը',
@@ -41,16 +42,16 @@
currentText: 'Այժմ',
closeText: 'Փակել',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['am']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-bg.js
/* Bulgarian translation for the jQuery Timepicker Addon */
/* Written by Plamen Kovandjiev */
-(function($) {
+
$.timepicker.regional['bg'] = {
timeOnlyTitle: 'Изберете време',
timeText: 'Време',
@@ -63,15 +64,16 @@
currentText: 'Сега',
closeText: 'Затвори',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['bg']);
-})(jQuery);
+
+// source: src/i18n/jquery-ui-timepicker-ca.js
/* Catalan translation for the jQuery Timepicker Addon */
/* Written by Sergi Faber */
-(function($) {
+
$.timepicker.regional['ca'] = {
timeOnlyTitle: 'Escollir una hora',
timeText: 'Hora',
@@ -84,16 +86,16 @@
currentText: 'Ara',
closeText: 'Tancar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['ca']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-cs.js
/* Czech translation for the jQuery Timepicker Addon */
/* Written by Ondřej Vodáček */
-(function($) {
+
$.timepicker.regional['cs'] = {
timeOnlyTitle: 'Vyberte čas',
timeText: 'Čas',
@@ -106,16 +108,16 @@
currentText: 'Nyní',
closeText: 'Zavřít',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['dop.', 'AM', 'A'],
pmNames: ['odp.', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['cs']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-da.js
/* Danish translation for the jQuery Timepicker Addon */
/* Written by Lars H. Jensen (http://www.larshj.dk) */
-(function ($) {
+
$.timepicker.regional['da'] = {
timeOnlyTitle: 'Vælg tid',
timeText: 'Tid',
@@ -128,16 +130,16 @@
currentText: 'Nu',
closeText: 'Luk',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['am', 'AM', 'A'],
pmNames: ['pm', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['da']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-de.js
/* German translation for the jQuery Timepicker Addon */
/* Written by Marvin */
-(function($) {
+
$.timepicker.regional['de'] = {
timeOnlyTitle: 'Zeit wählen',
timeText: 'Zeit',
@@ -150,38 +152,39 @@
currentText: 'Jetzt',
closeText: 'Fertig',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['vorm.', 'AM', 'A'],
pmNames: ['nachm.', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['de']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-el.js
/* Hellenic translation for the jQuery Timepicker Addon */
/* Written by Christos Pontikis */
-(function($) {
+
$.timepicker.regional['el'] = {
timeOnlyTitle: 'Επιλογή ώρας',
timeText: 'Ώρα',
hourText: 'Ώρες',
minuteText: 'Λεπτά',
secondText: 'Δευτερόλεπτα',
- millisecText: 'μιλιδευτερόλεπτο',
- microsecText: 'Microseconds',
+ millisecText: 'Χιλιοστοδευτερόλεπτα',
+ microsecText: 'Μικροδευτερόλεπτα',
timezoneText: 'Ζώνη ώρας',
currentText: 'Τώρα',
closeText: 'Κλείσιμο',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['π.μ.', 'AM', 'A'],
pmNames: ['μ.μ.', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['el']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-es.js
/* Spanish translation for the jQuery Timepicker Addon */
/* Written by Ianaré Sévi */
-(function($) {
+/* Modified by Carlos Martínez */
+
$.timepicker.regional['es'] = {
timeOnlyTitle: 'Elegir una hora',
timeText: 'Hora',
@@ -190,20 +193,20 @@
secondText: 'Segundos',
millisecText: 'Milisegundos',
microsecText: 'Microsegundos',
- timezoneText: 'Huso horario',
- currentText: 'Ahora',
+ timezoneText: 'Uso horario',
+ currentText: 'Hoy',
closeText: 'Cerrar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['es']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-et.js
/* Estonian translation for the jQuery Timepicker Addon */
/* Written by Karl Sutt (karl@sutt.ee) */
-(function($) {
+
$.timepicker.regional['et'] = {
timeOnlyTitle: 'Vali aeg',
timeText: 'Aeg',
@@ -216,17 +219,17 @@
currentText: 'Praegu',
closeText: 'Valmis',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['et']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-eu.js
/* Basque trannslation for JQuery Timepicker Addon */
/* Translated by Xabi Fer */
/* Fixed by Asier Iturralde Sarasola - iametza interaktiboa */
-(function($) {
+
$.timepicker.regional['eu'] = {
timeOnlyTitle: 'Aukeratu ordua',
timeText: 'Ordua',
@@ -239,15 +242,38 @@
currentText: 'Orain',
closeText: 'Itxi',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['eu']);
-})(jQuery);
+
+// source: src/i18n/jquery-ui-timepicker-fa.js
+/* Persian translation for the jQuery Timepicker Addon */
+/* Written by Meysam Pour Ganji */
+
+ $.timepicker.regional['fa'] = {
+ timeOnlyTitle: 'انتخاب زمان',
+ timeText: 'زمان',
+ hourText: 'ساعت',
+ minuteText: 'دقیقه',
+ secondText: 'ثانیه',
+ millisecText: 'میلی ثانیه',
+ microsecText: 'میکرو ثانیه',
+ timezoneText: 'منطقه زمانی',
+ currentText: 'الان',
+ closeText: 'انتخاب',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['قبل ظهر', 'AM', 'A'],
+ pmNames: ['بعد ظهر', 'PM', 'P'],
+ isRTL: true
+ };
+
+// source: src/i18n/jquery-ui-timepicker-fi.js
/* Finnish translation for the jQuery Timepicker Addon */
/* Written by Juga Paazmaya (http://github.com/paazmaya) */
-(function($) {
+
$.timepicker.regional['fi'] = {
timeOnlyTitle: 'Valitse aika',
timeText: 'Aika',
@@ -260,16 +286,16 @@
currentText: 'Nyt',
closeText: 'Sulje',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['ap.', 'AM', 'A'],
pmNames: ['ip.', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['fi']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-fr.js
/* French translation for the jQuery Timepicker Addon */
/* Written by Thomas Lété */
-(function($) {
+
$.timepicker.regional['fr'] = {
timeOnlyTitle: 'Choisir une heure',
timeText: 'Heure',
@@ -282,16 +308,16 @@
currentText: 'Maintenant',
closeText: 'Terminé',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['fr']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-gl.js
/* Galician translation for the jQuery Timepicker Addon */
/* Written by David Barral */
-(function($) {
+
$.timepicker.regional['gl'] = {
timeOnlyTitle: 'Elixir unha hora',
timeText: 'Hora',
@@ -304,16 +330,16 @@
currentText: 'Agora',
closeText: 'Pechar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['gl']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-he.js
/* Hebrew translation for the jQuery Timepicker Addon */
/* Written by Lior Lapid */
-(function($) {
+
$.timepicker.regional["he"] = {
timeOnlyTitle: "בחירת זמן",
timeText: "שעה",
@@ -326,16 +352,16 @@
currentText: "עכשיו",
closeText:"סגור",
timeFormat: "HH:mm",
+ timeSuffix: '',
amNames: ['לפנה"צ', 'AM', 'A'],
pmNames: ['אחה"צ', 'PM', 'P'],
isRTL: true
};
- $.timepicker.setDefaults($.timepicker.regional["he"]);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-hr.js
/* Croatian translation for the jQuery Timepicker Addon */
/* Written by Mladen */
-(function($) {
+
$.timepicker.regional['hr'] = {
timeOnlyTitle: 'Odaberi vrijeme',
timeText: 'Vrijeme',
@@ -348,15 +374,16 @@
currentText: 'Sada',
closeText: 'Gotovo',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['hr']);
-})(jQuery);
+
+// source: src/i18n/jquery-ui-timepicker-hu.js
/* Hungarian translation for the jQuery Timepicker Addon */
/* Written by Vas Gábor */
-(function($) {
+
$.timepicker.regional['hu'] = {
timeOnlyTitle: 'Válasszon időpontot',
timeText: 'Idő',
@@ -369,16 +396,16 @@
currentText: 'Most',
closeText: 'Kész',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['de.', 'AM', 'A'],
pmNames: ['du.', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['hu']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-id.js
/* Indonesian translation for the jQuery Timepicker Addon */
/* Written by Nia */
-(function($) {
+
$.timepicker.regional['id'] = {
timeOnlyTitle: 'Pilih Waktu',
timeText: 'Waktu',
@@ -391,16 +418,16 @@
currentText: 'Sekarang',
closeText: 'OK',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['id']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-it.js
/* Italian translation for the jQuery Timepicker Addon */
/* Written by Marco "logicoder" Del Tongo */
-(function($) {
+
$.timepicker.regional['it'] = {
timeOnlyTitle: 'Scegli orario',
timeText: 'Orario',
@@ -413,16 +440,16 @@
currentText: 'Adesso',
closeText: 'Chiudi',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['m.', 'AM', 'A'],
pmNames: ['p.', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['it']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-ja.js
/* Japanese translation for the jQuery Timepicker Addon */
/* Written by Jun Omae */
-(function($) {
+
$.timepicker.regional['ja'] = {
timeOnlyTitle: '時間を選択',
timeText: '時間',
@@ -435,16 +462,16 @@
currentText: '現時刻',
closeText: '閉じる',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['午前', 'AM', 'A'],
pmNames: ['午後', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['ja']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-ko.js
/* Korean translation for the jQuery Timepicker Addon */
/* Written by Genie */
-(function($) {
+
$.timepicker.regional['ko'] = {
timeOnlyTitle: '시간 선택',
timeText: '시간',
@@ -457,16 +484,16 @@
currentText: '현재 시각',
closeText: '닫기',
timeFormat: 'tt h:mm',
+ timeSuffix: '',
amNames: ['오전', 'AM', 'A'],
pmNames: ['오후', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['ko']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-lt.js
/* Lithuanian translation for the jQuery Timepicker Addon */
/* Written by Irmantas Šiupšinskas */
-(function($) {
+
$.timepicker.regional['lt'] = {
timeOnlyTitle: 'Pasirinkite laiką',
timeText: 'Laikas',
@@ -479,16 +506,60 @@
currentText: 'Dabar',
closeText: 'Uždaryti',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['priešpiet', 'AM', 'A'],
pmNames: ['popiet', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['lt']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-lv.js
+/* Latvian translation for the jQuery Timepicker Addon */
+/* Written by Dmitry Bogatykh */
+
+ $.timepicker.regional['lv'] = {
+ timeOnlyTitle: 'Ievadiet laiku',
+ timeText: 'Laiks',
+ hourText: 'Stundas',
+ minuteText: 'Minūtes',
+ secondText: 'Sekundes',
+ millisecText: 'Milisekundes',
+ microsecText: 'Mikrosekundes',
+ timezoneText: 'Laika josla',
+ currentText: 'Tagad',
+ closeText: 'Aizvērt',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['AM', 'AM', 'A'],
+ pmNames: ['PM', 'PM', 'P'],
+ isRTL: false
+ };
+
+// source: src/i18n/jquery-ui-timepicker-mk.js
+/* Macedonian cyrilic translation for the jQuery Timepicker Addon */
+/* Written by Vlatko Ristovski */
+
+ $.timepicker.regional['mk'] = {
+ timeOnlyTitle: 'Одберете време',
+ timeText: 'Време',
+ hourText: 'Час',
+ minuteText: 'Минути',
+ secondText: 'Секунди',
+ millisecText: 'Милисекунди',
+ microsecText: 'Микросекунди',
+ timezoneText: 'Временска зона',
+ currentText: 'Сега',
+ closeText: 'Затвори',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['AM', 'A'],
+ pmNames: ['PM', 'P'],
+ isRTL: false
+ };
+
+// source: src/i18n/jquery-ui-timepicker-nl.js
/* Dutch translation for the jQuery Timepicker Addon */
/* Written by Martijn van der Lee */
-(function($) {
+
$.timepicker.regional['nl'] = {
timeOnlyTitle: 'Tijdstip',
timeText: 'Tijd',
@@ -501,16 +572,16 @@
currentText: 'Vandaag',
closeText: 'Sluiten',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['nl']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-no.js
/* Norwegian translation for the jQuery Timepicker Addon */
/* Written by Morten Hauan (http://hauan.me) */
-(function($) {
+
$.timepicker.regional['no'] = {
timeOnlyTitle: 'Velg tid',
timeText: 'Tid',
@@ -523,16 +594,16 @@
currentText: 'Nå',
closeText: 'Lukk',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['am', 'AM', 'A'],
pmNames: ['pm', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['no']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-pl.js
/* Polish translation for the jQuery Timepicker Addon */
/* Written by Michał Pena */
-(function($) {
+
$.timepicker.regional['pl'] = {
timeOnlyTitle: 'Wybierz godzinę',
timeText: 'Czas',
@@ -545,16 +616,16 @@
currentText: 'Teraz',
closeText: 'Gotowe',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['pl']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-pt-BR.js
/* Brazilian Portuguese translation for the jQuery Timepicker Addon */
/* Written by Diogo Damiani (diogodamiani@gmail.com) */
-(function ($) {
+
$.timepicker.regional['pt-BR'] = {
timeOnlyTitle: 'Escolha o horário',
timeText: 'Horário',
@@ -567,16 +638,16 @@
currentText: 'Agora',
closeText: 'Fechar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['pt-BR']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-pt.js
/* Portuguese translation for the jQuery Timepicker Addon */
/* Written by Luan Almeida */
-(function($) {
+
$.timepicker.regional['pt'] = {
timeOnlyTitle: 'Escolha uma hora',
timeText: 'Hora',
@@ -589,16 +660,16 @@
currentText: 'Agora',
closeText: 'Fechar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['pt']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-ro.js
/* Romanian translation for the jQuery Timepicker Addon */
/* Written by Romeo Adrian Cioaba */
-(function($) {
+
$.timepicker.regional['ro'] = {
timeOnlyTitle: 'Alegeţi o oră',
timeText: 'Timp',
@@ -611,16 +682,16 @@
currentText: 'Acum',
closeText: 'Închide',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['ro']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-ru.js
/* Russian translation for the jQuery Timepicker Addon */
/* Written by Trent Richardson */
-(function($) {
+
$.timepicker.regional['ru'] = {
timeOnlyTitle: 'Выберите время',
timeText: 'Время',
@@ -633,16 +704,16 @@
currentText: 'Сейчас',
closeText: 'Закрыть',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['ru']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-sk.js
/* Slovak translation for the jQuery Timepicker Addon */
/* Written by David Vallner */
-(function($) {
+
$.timepicker.regional['sk'] = {
timeOnlyTitle: 'Zvoľte čas',
timeText: 'Čas',
@@ -655,16 +726,60 @@
currentText: 'Teraz',
closeText: 'Zavrieť',
timeFormat: 'H:m',
+ timeSuffix: '',
amNames: ['dop.', 'AM', 'A'],
pmNames: ['pop.', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['sk']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-sl.js
+/* Slovenian translation for the jQuery Timepicker Addon */
+/* Written by Hadalin (https://github.com/hadalin) */
+
+ $.timepicker.regional['sl'] = {
+ timeOnlyTitle: 'Izberite čas',
+ timeText: 'Čas',
+ hourText: 'Ura',
+ minuteText: 'Minute',
+ secondText: 'Sekunde',
+ millisecText: 'Milisekunde',
+ microsecText: 'Mikrosekunde',
+ timezoneText: 'Časovni pas',
+ currentText: 'Sedaj',
+ closeText: 'Zapri',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['dop.', 'AM', 'A'],
+ pmNames: ['pop.', 'PM', 'P'],
+ isRTL: false
+ };
+
+// source: src/i18n/jquery-ui-timepicker-sq.js
+/* Albanian translation for the jQuery Timepicker Addon */
+/* Written by Olti Buzi */
+
+ $.timepicker.regional['sq'] = {
+ timeOnlyTitle: 'Zgjidh orarin',
+ timeText: 'Orari',
+ hourText: 'Ora',
+ minuteText: 'Minuta',
+ secondText: 'Sekonda',
+ millisecText: 'Minisekonda',
+ microsecText: 'Mikrosekonda',
+ timezoneText: 'Zona kohore',
+ currentText: 'Tani',
+ closeText: 'Mbyll',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['m.', 'AM', 'A'],
+ pmNames: ['p.', 'PM', 'P'],
+ isRTL: false
+ };
+
+// source: src/i18n/jquery-ui-timepicker-sr-RS.js
/* Serbian cyrilic translation for the jQuery Timepicker Addon */
/* Written by Vladimir Jelovac */
-(function($) {
+
$.timepicker.regional['sr-RS'] = {
timeOnlyTitle: 'Одаберите време',
timeText: 'Време',
@@ -677,16 +792,16 @@
currentText: 'Сада',
closeText: 'Затвори',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['sr-RS']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-sr-YU.js
/* Serbian latin translation for the jQuery Timepicker Addon */
/* Written by Vladimir Jelovac */
-(function($) {
+
$.timepicker.regional['sr-YU'] = {
timeOnlyTitle: 'Odaberite vreme',
timeText: 'Vreme',
@@ -699,16 +814,16 @@
currentText: 'Sada',
closeText: 'Zatvori',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['sr-YU']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-sv.js
/* Swedish translation for the jQuery Timepicker Addon */
/* Written by Nevon */
-(function($) {
+
$.timepicker.regional['sv'] = {
timeOnlyTitle: 'Välj en tid',
timeText: 'Tid',
@@ -721,16 +836,16 @@
currentText: 'Nu',
closeText: 'Stäng',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['sv']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-th.js
/* Thai translation for the jQuery Timepicker Addon */
/* Written by Yote Wachirapornpongsa */
-(function($) {
+
$.timepicker.regional['th'] = {
timeOnlyTitle: 'เลือกเวลา',
timeText: 'เวลา ',
@@ -742,13 +857,14 @@
timezoneText: 'เขตเวลา',
currentText: 'เวลาปัจจุบัน',
closeText: 'ปิด',
- timeFormat: 'hh:mm tt'
+ timeFormat: 'hh:mm tt',
+ timeSuffix: ''
};
- $.timepicker.setDefaults($.timepicker.regional['th']);
-})(jQuery);
+
+// source: src/i18n/jquery-ui-timepicker-tr.js
/* Turkish translation for the jQuery Timepicker Addon */
/* Written by Fehmi Can Saglam, Edited by Goktug Ozturk */
-(function($) {
+
$.timepicker.regional['tr'] = {
timeOnlyTitle: 'Zaman Seçiniz',
timeText: 'Zaman',
@@ -761,16 +877,16 @@
currentText: 'Şu an',
closeText: 'Tamam',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['ÖÖ', 'Ö'],
pmNames: ['ÖS', 'S'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['tr']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-uk.js
/* Ukrainian translation for the jQuery Timepicker Addon */
/* Written by Sergey Noskov */
-(function($) {
+
$.timepicker.regional['uk'] = {
timeOnlyTitle: 'Виберіть час',
timeText: 'Час',
@@ -783,16 +899,16 @@
currentText: 'Зараз',
closeText: 'Закрити',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['uk']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-vi.js
/* Vietnamese translation for the jQuery Timepicker Addon */
/* Written by Nguyen Dinh Trung */
-(function($) {
+
$.timepicker.regional['vi'] = {
timeOnlyTitle: 'Chọn giờ',
timeText: 'Thời gian',
@@ -805,16 +921,16 @@
currentText: 'Hiện thời',
closeText: 'Đóng',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['SA', 'S'],
pmNames: ['CH', 'C'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['vi']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-zh-CN.js
/* Simplified Chinese translation for the jQuery Timepicker Addon /
/ Written by Will Lu */
-(function($) {
+
$.timepicker.regional['zh-CN'] = {
timeOnlyTitle: '选择时间',
timeText: '时间',
@@ -827,16 +943,16 @@
currentText: '现在时间',
closeText: '关闭',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['zh-CN']);
-})(jQuery);
+// source: src/i18n/jquery-ui-timepicker-zh-TW.js
/* Chinese translation for the jQuery Timepicker Addon */
/* Written by Alang.lin */
-(function($) {
+
$.timepicker.regional['zh-TW'] = {
timeOnlyTitle: '選擇時分秒',
timeText: '時間',
@@ -849,11 +965,10 @@
currentText: '現在時間',
closeText: '確定',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['上午', 'AM', 'A'],
pmNames: ['下午', 'PM', 'P'],
isRTL: false
};
- $.timepicker.setDefaults($.timepicker.regional['zh-TW']);
-})(jQuery);
})(jQuery);
diff --git a/dist/i18n/jquery-ui-timepicker-addon-i18n.min.js b/dist/i18n/jquery-ui-timepicker-addon-i18n.min.js
index 99fa505..0f6f4be 100644
--- a/dist/i18n/jquery-ui-timepicker-addon-i18n.min.js
+++ b/dist/i18n/jquery-ui-timepicker-addon-i18n.min.js
@@ -1,4 +1,4 @@
-/*! jQuery Timepicker Addon - v1.4.5 - 2014-05-26
+/*! jQuery Timepicker Addon - v1.6.3 - 2016-04-20
* http://trentrichardson.com/examples/timepicker
-* Copyright (c) 2014 Trent Richardson; Licensed MIT */
-(function(){(function(e){e.timepicker.regional.af={timeOnlyTitle:"Kies Tyd",timeText:"Tyd ",hourText:"Ure ",minuteText:"Minute",secondText:"Sekondes",millisecText:"Millisekondes",microsecText:"Mikrosekondes",timezoneText:"Tydsone",currentText:"Huidige Tyd",closeText:"Klaar",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.af)})(jQuery),function(e){e.timepicker.regional.am={timeOnlyTitle:"Ընտրեք ժամանակը",timeText:"Ժամանակը",hourText:"Ժամ",minuteText:"Րոպե",secondText:"Վարկյան",millisecText:"Միլիվարկյան",microsecText:"Միկրովարկյան",timezoneText:"Ժամային գոտին",currentText:"Այժմ",closeText:"Փակել",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.am)}(jQuery),function(e){e.timepicker.regional.bg={timeOnlyTitle:"Изберете време",timeText:"Време",hourText:"Час",minuteText:"Минути",secondText:"Секунди",millisecText:"Милисекунди",microsecText:"Микросекунди",timezoneText:"Часови пояс",currentText:"Сега",closeText:"Затвори",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.bg)}(jQuery),function(e){e.timepicker.regional.ca={timeOnlyTitle:"Escollir una hora",timeText:"Hora",hourText:"Hores",minuteText:"Minuts",secondText:"Segons",millisecText:"Milisegons",microsecText:"Microsegons",timezoneText:"Fus horari",currentText:"Ara",closeText:"Tancar",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.ca)}(jQuery),function(e){e.timepicker.regional.cs={timeOnlyTitle:"Vyberte čas",timeText:"Čas",hourText:"Hodiny",minuteText:"Minuty",secondText:"Vteřiny",millisecText:"Milisekundy",microsecText:"Mikrosekundy",timezoneText:"Časové pásmo",currentText:"Nyní",closeText:"Zavřít",timeFormat:"HH:mm",amNames:["dop.","AM","A"],pmNames:["odp.","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.cs)}(jQuery),function(e){e.timepicker.regional.da={timeOnlyTitle:"Vælg tid",timeText:"Tid",hourText:"Time",minuteText:"Minut",secondText:"Sekund",millisecText:"Millisekund",microsecText:"Mikrosekund",timezoneText:"Tidszone",currentText:"Nu",closeText:"Luk",timeFormat:"HH:mm",amNames:["am","AM","A"],pmNames:["pm","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.da)}(jQuery),function(e){e.timepicker.regional.de={timeOnlyTitle:"Zeit wählen",timeText:"Zeit",hourText:"Stunde",minuteText:"Minute",secondText:"Sekunde",millisecText:"Millisekunde",microsecText:"Mikrosekunde",timezoneText:"Zeitzone",currentText:"Jetzt",closeText:"Fertig",timeFormat:"HH:mm",amNames:["vorm.","AM","A"],pmNames:["nachm.","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.de)}(jQuery),function(e){e.timepicker.regional.el={timeOnlyTitle:"Επιλογή ώρας",timeText:"Ώρα",hourText:"Ώρες",minuteText:"Λεπτά",secondText:"Δευτερόλεπτα",millisecText:"μιλιδευτερόλεπτο",microsecText:"Microseconds",timezoneText:"Ζώνη ώρας",currentText:"Τώρα",closeText:"Κλείσιμο",timeFormat:"HH:mm",amNames:["π.μ.","AM","A"],pmNames:["μ.μ.","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.el)}(jQuery),function(e){e.timepicker.regional.es={timeOnlyTitle:"Elegir una hora",timeText:"Hora",hourText:"Horas",minuteText:"Minutos",secondText:"Segundos",millisecText:"Milisegundos",microsecText:"Microsegundos",timezoneText:"Huso horario",currentText:"Ahora",closeText:"Cerrar",timeFormat:"HH:mm",amNames:["a.m.","AM","A"],pmNames:["p.m.","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.es)}(jQuery),function(e){e.timepicker.regional.et={timeOnlyTitle:"Vali aeg",timeText:"Aeg",hourText:"Tund",minuteText:"Minut",secondText:"Sekund",millisecText:"Millisekundis",microsecText:"Mikrosekundis",timezoneText:"Ajavöönd",currentText:"Praegu",closeText:"Valmis",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.et)}(jQuery),function(e){e.timepicker.regional.eu={timeOnlyTitle:"Aukeratu ordua",timeText:"Ordua",hourText:"Orduak",minuteText:"Minutuak",secondText:"Segundoak",millisecText:"Milisegundoak",microsecText:"Mikrosegundoak",timezoneText:"Ordu-eremua",currentText:"Orain",closeText:"Itxi",timeFormat:"HH:mm",amNames:["a.m.","AM","A"],pmNames:["p.m.","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.eu)}(jQuery),function(e){e.timepicker.regional.fi={timeOnlyTitle:"Valitse aika",timeText:"Aika",hourText:"Tunti",minuteText:"Minuutti",secondText:"Sekunti",millisecText:"Millisekunnin",microsecText:"Mikrosekuntia",timezoneText:"Aikavyöhyke",currentText:"Nyt",closeText:"Sulje",timeFormat:"HH:mm",amNames:["ap.","AM","A"],pmNames:["ip.","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.fi)}(jQuery),function(e){e.timepicker.regional.fr={timeOnlyTitle:"Choisir une heure",timeText:"Heure",hourText:"Heures",minuteText:"Minutes",secondText:"Secondes",millisecText:"Millisecondes",microsecText:"Microsecondes",timezoneText:"Fuseau horaire",currentText:"Maintenant",closeText:"Terminé",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.fr)}(jQuery),function(e){e.timepicker.regional.gl={timeOnlyTitle:"Elixir unha hora",timeText:"Hora",hourText:"Horas",minuteText:"Minutos",secondText:"Segundos",millisecText:"Milisegundos",microsecText:"Microssegundos",timezoneText:"Fuso horario",currentText:"Agora",closeText:"Pechar",timeFormat:"HH:mm",amNames:["a.m.","AM","A"],pmNames:["p.m.","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.gl)}(jQuery),function(e){e.timepicker.regional.he={timeOnlyTitle:"בחירת זמן",timeText:"שעה",hourText:"שעות",minuteText:"דקות",secondText:"שניות",millisecText:"אלפית השנייה",microsecText:"מיקרו",timezoneText:"אזור זמן",currentText:"עכשיו",closeText:"סגור",timeFormat:"HH:mm",amNames:['לפנה"צ',"AM","A"],pmNames:['אחה"צ',"PM","P"],isRTL:!0},e.timepicker.setDefaults(e.timepicker.regional.he)}(jQuery),function(e){e.timepicker.regional.hr={timeOnlyTitle:"Odaberi vrijeme",timeText:"Vrijeme",hourText:"Sati",minuteText:"Minute",secondText:"Sekunde",millisecText:"Milisekunde",microsecText:"Mikrosekunde",timezoneText:"Vremenska zona",currentText:"Sada",closeText:"Gotovo",timeFormat:"HH:mm",amNames:["a.m.","AM","A"],pmNames:["p.m.","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.hr)}(jQuery),function(e){e.timepicker.regional.hu={timeOnlyTitle:"Válasszon időpontot",timeText:"Idő",hourText:"Óra",minuteText:"Perc",secondText:"Másodperc",millisecText:"Milliszekundumos",microsecText:"Ezredmásodperc",timezoneText:"Időzóna",currentText:"Most",closeText:"Kész",timeFormat:"HH:mm",amNames:["de.","AM","A"],pmNames:["du.","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.hu)}(jQuery),function(e){e.timepicker.regional.id={timeOnlyTitle:"Pilih Waktu",timeText:"Waktu",hourText:"Pukul",minuteText:"Menit",secondText:"Detik",millisecText:"Milidetik",microsecText:"Mikrodetik",timezoneText:"Zona Waktu",currentText:"Sekarang",closeText:"OK",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.id)}(jQuery),function(e){e.timepicker.regional.it={timeOnlyTitle:"Scegli orario",timeText:"Orario",hourText:"Ora",minuteText:"Minuti",secondText:"Secondi",millisecText:"Millisecondi",microsecText:"Microsecondi",timezoneText:"Fuso orario",currentText:"Adesso",closeText:"Chiudi",timeFormat:"HH:mm",amNames:["m.","AM","A"],pmNames:["p.","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.it)}(jQuery),function(e){e.timepicker.regional.ja={timeOnlyTitle:"時間を選択",timeText:"時間",hourText:"時",minuteText:"分",secondText:"秒",millisecText:"ミリ秒",microsecText:"マイクロ秒",timezoneText:"タイムゾーン",currentText:"現時刻",closeText:"閉じる",timeFormat:"HH:mm",amNames:["午前","AM","A"],pmNames:["午後","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.ja)}(jQuery),function(e){e.timepicker.regional.ko={timeOnlyTitle:"시간 선택",timeText:"시간",hourText:"시",minuteText:"분",secondText:"초",millisecText:"밀리초",microsecText:"마이크로",timezoneText:"표준 시간대",currentText:"현재 시각",closeText:"닫기",timeFormat:"tt h:mm",amNames:["오전","AM","A"],pmNames:["오후","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.ko)}(jQuery),function(e){e.timepicker.regional.lt={timeOnlyTitle:"Pasirinkite laiką",timeText:"Laikas",hourText:"Valandos",minuteText:"Minutės",secondText:"Sekundės",millisecText:"Milisekundės",microsecText:"Mikrosekundės",timezoneText:"Laiko zona",currentText:"Dabar",closeText:"Uždaryti",timeFormat:"HH:mm",amNames:["priešpiet","AM","A"],pmNames:["popiet","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.lt)}(jQuery),function(e){e.timepicker.regional.nl={timeOnlyTitle:"Tijdstip",timeText:"Tijd",hourText:"Uur",minuteText:"Minuut",secondText:"Seconde",millisecText:"Milliseconde",microsecText:"Microseconde",timezoneText:"Tijdzone",currentText:"Vandaag",closeText:"Sluiten",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.nl)}(jQuery),function(e){e.timepicker.regional.no={timeOnlyTitle:"Velg tid",timeText:"Tid",hourText:"Time",minuteText:"Minutt",secondText:"Sekund",millisecText:"Millisekund",microsecText:"mikrosekund",timezoneText:"Tidssone",currentText:"Nå",closeText:"Lukk",timeFormat:"HH:mm",amNames:["am","AM","A"],pmNames:["pm","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.no)}(jQuery),function(e){e.timepicker.regional.pl={timeOnlyTitle:"Wybierz godzinę",timeText:"Czas",hourText:"Godzina",minuteText:"Minuta",secondText:"Sekunda",millisecText:"Milisekunda",microsecText:"Mikrosekunda",timezoneText:"Strefa czasowa",currentText:"Teraz",closeText:"Gotowe",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.pl)}(jQuery),function(e){e.timepicker.regional["pt-BR"]={timeOnlyTitle:"Escolha o horário",timeText:"Horário",hourText:"Hora",minuteText:"Minutos",secondText:"Segundos",millisecText:"Milissegundos",microsecText:"Microssegundos",timezoneText:"Fuso horário",currentText:"Agora",closeText:"Fechar",timeFormat:"HH:mm",amNames:["a.m.","AM","A"],pmNames:["p.m.","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional["pt-BR"])}(jQuery),function(e){e.timepicker.regional.pt={timeOnlyTitle:"Escolha uma hora",timeText:"Hora",hourText:"Horas",minuteText:"Minutos",secondText:"Segundos",millisecText:"Milissegundos",microsecText:"Microssegundos",timezoneText:"Fuso horário",currentText:"Agora",closeText:"Fechar",timeFormat:"HH:mm",amNames:["a.m.","AM","A"],pmNames:["p.m.","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.pt)}(jQuery),function(e){e.timepicker.regional.ro={timeOnlyTitle:"Alegeţi o oră",timeText:"Timp",hourText:"Ore",minuteText:"Minute",secondText:"Secunde",millisecText:"Milisecunde",microsecText:"Microsecunde",timezoneText:"Fus orar",currentText:"Acum",closeText:"Închide",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.ro)}(jQuery),function(e){e.timepicker.regional.ru={timeOnlyTitle:"Выберите время",timeText:"Время",hourText:"Часы",minuteText:"Минуты",secondText:"Секунды",millisecText:"Миллисекунды",microsecText:"Микросекунды",timezoneText:"Часовой пояс",currentText:"Сейчас",closeText:"Закрыть",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.ru)}(jQuery),function(e){e.timepicker.regional.sk={timeOnlyTitle:"Zvoľte čas",timeText:"Čas",hourText:"Hodiny",minuteText:"Minúty",secondText:"Sekundy",millisecText:"Milisekundy",microsecText:"Mikrosekundy",timezoneText:"Časové pásmo",currentText:"Teraz",closeText:"Zavrieť",timeFormat:"H:m",amNames:["dop.","AM","A"],pmNames:["pop.","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.sk)}(jQuery),function(e){e.timepicker.regional["sr-RS"]={timeOnlyTitle:"Одаберите време",timeText:"Време",hourText:"Сати",minuteText:"Минути",secondText:"Секунде",millisecText:"Милисекунде",microsecText:"Микросекунде",timezoneText:"Временска зона",currentText:"Сада",closeText:"Затвори",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional["sr-RS"])}(jQuery),function(e){e.timepicker.regional["sr-YU"]={timeOnlyTitle:"Odaberite vreme",timeText:"Vreme",hourText:"Sati",minuteText:"Minuti",secondText:"Sekunde",millisecText:"Milisekunde",microsecText:"Mikrosekunde",timezoneText:"Vremenska zona",currentText:"Sada",closeText:"Zatvori",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional["sr-YU"])}(jQuery),function(e){e.timepicker.regional.sv={timeOnlyTitle:"Välj en tid",timeText:"Tid",hourText:"Timme",minuteText:"Minut",secondText:"Sekund",millisecText:"Millisekund",microsecText:"Mikrosekund",timezoneText:"Tidszon",currentText:"Nu",closeText:"Stäng",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.sv)}(jQuery),function(e){e.timepicker.regional.th={timeOnlyTitle:"เลือกเวลา",timeText:"เวลา ",hourText:"ชั่วโมง ",minuteText:"นาที",secondText:"วินาที",millisecText:"มิลลิวินาที",microsecText:"ไมโคริวินาที",timezoneText:"เขตเวลา",currentText:"เวลาปัจจุบัน",closeText:"ปิด",timeFormat:"hh:mm tt"},e.timepicker.setDefaults(e.timepicker.regional.th)}(jQuery),function(e){e.timepicker.regional.tr={timeOnlyTitle:"Zaman Seçiniz",timeText:"Zaman",hourText:"Saat",minuteText:"Dakika",secondText:"Saniye",millisecText:"Milisaniye",microsecText:"Mikrosaniye",timezoneText:"Zaman Dilimi",currentText:"Şu an",closeText:"Tamam",timeFormat:"HH:mm",amNames:["ÖÖ","Ö"],pmNames:["ÖS","S"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.tr)}(jQuery),function(e){e.timepicker.regional.uk={timeOnlyTitle:"Виберіть час",timeText:"Час",hourText:"Години",minuteText:"Хвилини",secondText:"Секунди",millisecText:"Мілісекунди",microsecText:"Мікросекунди",timezoneText:"Часовий пояс",currentText:"Зараз",closeText:"Закрити",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.uk)}(jQuery),function(e){e.timepicker.regional.vi={timeOnlyTitle:"Chọn giờ",timeText:"Thời gian",hourText:"Giờ",minuteText:"Phút",secondText:"Giây",millisecText:"Mili giây",microsecText:"Micrô giây",timezoneText:"Múi giờ",currentText:"Hiện thời",closeText:"Đóng",timeFormat:"HH:mm",amNames:["SA","S"],pmNames:["CH","C"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional.vi)}(jQuery),function(e){e.timepicker.regional["zh-CN"]={timeOnlyTitle:"选择时间",timeText:"时间",hourText:"小时",minuteText:"分钟",secondText:"秒钟",millisecText:"毫秒",microsecText:"微秒",timezoneText:"时区",currentText:"现在时间",closeText:"关闭",timeFormat:"HH:mm",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional["zh-CN"])}(jQuery),function(e){e.timepicker.regional["zh-TW"]={timeOnlyTitle:"選擇時分秒",timeText:"時間",hourText:"時",minuteText:"分",secondText:"秒",millisecText:"毫秒",microsecText:"微秒",timezoneText:"時區",currentText:"現在時間",closeText:"確定",timeFormat:"HH:mm",amNames:["上午","AM","A"],pmNames:["下午","PM","P"],isRTL:!1},e.timepicker.setDefaults(e.timepicker.regional["zh-TW"])}(jQuery)})(jQuery);
\ No newline at end of file
+* Copyright (c) 2016 Trent Richardson; Licensed MIT */
+!function(a){a.timepicker.regional.af={timeOnlyTitle:"Kies Tyd",timeText:"Tyd ",hourText:"Ure ",minuteText:"Minute",secondText:"Sekondes",millisecText:"Millisekondes",microsecText:"Mikrosekondes",timezoneText:"Tydsone",currentText:"Huidige Tyd",closeText:"Klaar",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional.am={timeOnlyTitle:"Ընտրեք ժամանակը",timeText:"Ժամանակը",hourText:"Ժամ",minuteText:"Րոպե",secondText:"Վարկյան",millisecText:"Միլիվարկյան",microsecText:"Միկրովարկյան",timezoneText:"Ժամային գոտին",currentText:"Այժմ",closeText:"Փակել",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional.bg={timeOnlyTitle:"Изберете време",timeText:"Време",hourText:"Час",minuteText:"Минути",secondText:"Секунди",millisecText:"Милисекунди",microsecText:"Микросекунди",timezoneText:"Часови пояс",currentText:"Сега",closeText:"Затвори",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional.ca={timeOnlyTitle:"Escollir una hora",timeText:"Hora",hourText:"Hores",minuteText:"Minuts",secondText:"Segons",millisecText:"Milisegons",microsecText:"Microsegons",timezoneText:"Fus horari",currentText:"Ara",closeText:"Tancar",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional.cs={timeOnlyTitle:"Vyberte čas",timeText:"Čas",hourText:"Hodiny",minuteText:"Minuty",secondText:"Vteřiny",millisecText:"Milisekundy",microsecText:"Mikrosekundy",timezoneText:"Časové pásmo",currentText:"Nyní",closeText:"Zavřít",timeFormat:"HH:mm",timeSuffix:"",amNames:["dop.","AM","A"],pmNames:["odp.","PM","P"],isRTL:!1},a.timepicker.regional.da={timeOnlyTitle:"Vælg tid",timeText:"Tid",hourText:"Time",minuteText:"Minut",secondText:"Sekund",millisecText:"Millisekund",microsecText:"Mikrosekund",timezoneText:"Tidszone",currentText:"Nu",closeText:"Luk",timeFormat:"HH:mm",timeSuffix:"",amNames:["am","AM","A"],pmNames:["pm","PM","P"],isRTL:!1},a.timepicker.regional.de={timeOnlyTitle:"Zeit wählen",timeText:"Zeit",hourText:"Stunde",minuteText:"Minute",secondText:"Sekunde",millisecText:"Millisekunde",microsecText:"Mikrosekunde",timezoneText:"Zeitzone",currentText:"Jetzt",closeText:"Fertig",timeFormat:"HH:mm",timeSuffix:"",amNames:["vorm.","AM","A"],pmNames:["nachm.","PM","P"],isRTL:!1},a.timepicker.regional.el={timeOnlyTitle:"Επιλογή ώρας",timeText:"Ώρα",hourText:"Ώρες",minuteText:"Λεπτά",secondText:"Δευτερόλεπτα",millisecText:"Χιλιοστοδευτερόλεπτα",microsecText:"Μικροδευτερόλεπτα",timezoneText:"Ζώνη ώρας",currentText:"Τώρα",closeText:"Κλείσιμο",timeFormat:"HH:mm",timeSuffix:"",amNames:["π.μ.","AM","A"],pmNames:["μ.μ.","PM","P"],isRTL:!1},a.timepicker.regional.es={timeOnlyTitle:"Elegir una hora",timeText:"Hora",hourText:"Horas",minuteText:"Minutos",secondText:"Segundos",millisecText:"Milisegundos",microsecText:"Microsegundos",timezoneText:"Uso horario",currentText:"Hoy",closeText:"Cerrar",timeFormat:"HH:mm",timeSuffix:"",amNames:["a.m.","AM","A"],pmNames:["p.m.","PM","P"],isRTL:!1},a.timepicker.regional.et={timeOnlyTitle:"Vali aeg",timeText:"Aeg",hourText:"Tund",minuteText:"Minut",secondText:"Sekund",millisecText:"Millisekundis",microsecText:"Mikrosekundis",timezoneText:"Ajavöönd",currentText:"Praegu",closeText:"Valmis",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional.eu={timeOnlyTitle:"Aukeratu ordua",timeText:"Ordua",hourText:"Orduak",minuteText:"Minutuak",secondText:"Segundoak",millisecText:"Milisegundoak",microsecText:"Mikrosegundoak",timezoneText:"Ordu-eremua",currentText:"Orain",closeText:"Itxi",timeFormat:"HH:mm",timeSuffix:"",amNames:["a.m.","AM","A"],pmNames:["p.m.","PM","P"],isRTL:!1},a.timepicker.regional.fa={timeOnlyTitle:"انتخاب زمان",timeText:"زمان",hourText:"ساعت",minuteText:"دقیقه",secondText:"ثانیه",millisecText:"میلی ثانیه",microsecText:"میکرو ثانیه",timezoneText:"منطقه زمانی",currentText:"الان",closeText:"انتخاب",timeFormat:"HH:mm",timeSuffix:"",amNames:["قبل ظهر","AM","A"],pmNames:["بعد ظهر","PM","P"],isRTL:!0},a.timepicker.regional.fi={timeOnlyTitle:"Valitse aika",timeText:"Aika",hourText:"Tunti",minuteText:"Minuutti",secondText:"Sekunti",millisecText:"Millisekunnin",microsecText:"Mikrosekuntia",timezoneText:"Aikavyöhyke",currentText:"Nyt",closeText:"Sulje",timeFormat:"HH:mm",timeSuffix:"",amNames:["ap.","AM","A"],pmNames:["ip.","PM","P"],isRTL:!1},a.timepicker.regional.fr={timeOnlyTitle:"Choisir une heure",timeText:"Heure",hourText:"Heures",minuteText:"Minutes",secondText:"Secondes",millisecText:"Millisecondes",microsecText:"Microsecondes",timezoneText:"Fuseau horaire",currentText:"Maintenant",closeText:"Terminé",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional.gl={timeOnlyTitle:"Elixir unha hora",timeText:"Hora",hourText:"Horas",minuteText:"Minutos",secondText:"Segundos",millisecText:"Milisegundos",microsecText:"Microssegundos",timezoneText:"Fuso horario",currentText:"Agora",closeText:"Pechar",timeFormat:"HH:mm",timeSuffix:"",amNames:["a.m.","AM","A"],pmNames:["p.m.","PM","P"],isRTL:!1},a.timepicker.regional.he={timeOnlyTitle:"בחירת זמן",timeText:"שעה",hourText:"שעות",minuteText:"דקות",secondText:"שניות",millisecText:"אלפית השנייה",microsecText:"מיקרו",timezoneText:"אזור זמן",currentText:"עכשיו",closeText:"סגור",timeFormat:"HH:mm",timeSuffix:"",amNames:['לפנה"צ',"AM","A"],pmNames:['אחה"צ',"PM","P"],isRTL:!0},a.timepicker.regional.hr={timeOnlyTitle:"Odaberi vrijeme",timeText:"Vrijeme",hourText:"Sati",minuteText:"Minute",secondText:"Sekunde",millisecText:"Milisekunde",microsecText:"Mikrosekunde",timezoneText:"Vremenska zona",currentText:"Sada",closeText:"Gotovo",timeFormat:"HH:mm",timeSuffix:"",amNames:["a.m.","AM","A"],pmNames:["p.m.","PM","P"],isRTL:!1},a.timepicker.regional.hu={timeOnlyTitle:"Válasszon időpontot",timeText:"Idő",hourText:"Óra",minuteText:"Perc",secondText:"Másodperc",millisecText:"Milliszekundumos",microsecText:"Ezredmásodperc",timezoneText:"Időzóna",currentText:"Most",closeText:"Kész",timeFormat:"HH:mm",timeSuffix:"",amNames:["de.","AM","A"],pmNames:["du.","PM","P"],isRTL:!1},a.timepicker.regional.id={timeOnlyTitle:"Pilih Waktu",timeText:"Waktu",hourText:"Pukul",minuteText:"Menit",secondText:"Detik",millisecText:"Milidetik",microsecText:"Mikrodetik",timezoneText:"Zona Waktu",currentText:"Sekarang",closeText:"OK",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional.it={timeOnlyTitle:"Scegli orario",timeText:"Orario",hourText:"Ora",minuteText:"Minuti",secondText:"Secondi",millisecText:"Millisecondi",microsecText:"Microsecondi",timezoneText:"Fuso orario",currentText:"Adesso",closeText:"Chiudi",timeFormat:"HH:mm",timeSuffix:"",amNames:["m.","AM","A"],pmNames:["p.","PM","P"],isRTL:!1},a.timepicker.regional.ja={timeOnlyTitle:"時間を選択",timeText:"時間",hourText:"時",minuteText:"分",secondText:"秒",millisecText:"ミリ秒",microsecText:"マイクロ秒",timezoneText:"タイムゾーン",currentText:"現時刻",closeText:"閉じる",timeFormat:"HH:mm",timeSuffix:"",amNames:["午前","AM","A"],pmNames:["午後","PM","P"],isRTL:!1},a.timepicker.regional.ko={timeOnlyTitle:"시간 선택",timeText:"시간",hourText:"시",minuteText:"분",secondText:"초",millisecText:"밀리초",microsecText:"마이크로",timezoneText:"표준 시간대",currentText:"현재 시각",closeText:"닫기",timeFormat:"tt h:mm",timeSuffix:"",amNames:["오전","AM","A"],pmNames:["오후","PM","P"],isRTL:!1},a.timepicker.regional.lt={timeOnlyTitle:"Pasirinkite laiką",timeText:"Laikas",hourText:"Valandos",minuteText:"Minutės",secondText:"Sekundės",millisecText:"Milisekundės",microsecText:"Mikrosekundės",timezoneText:"Laiko zona",currentText:"Dabar",closeText:"Uždaryti",timeFormat:"HH:mm",timeSuffix:"",amNames:["priešpiet","AM","A"],pmNames:["popiet","PM","P"],isRTL:!1},a.timepicker.regional.lv={timeOnlyTitle:"Ievadiet laiku",timeText:"Laiks",hourText:"Stundas",minuteText:"Minūtes",secondText:"Sekundes",millisecText:"Milisekundes",microsecText:"Mikrosekundes",timezoneText:"Laika josla",currentText:"Tagad",closeText:"Aizvērt",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","AM","A"],pmNames:["PM","PM","P"],isRTL:!1},a.timepicker.regional.mk={timeOnlyTitle:"Одберете време",timeText:"Време",hourText:"Час",minuteText:"Минути",secondText:"Секунди",millisecText:"Милисекунди",microsecText:"Микросекунди",timezoneText:"Временска зона",currentText:"Сега",closeText:"Затвори",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional.nl={timeOnlyTitle:"Tijdstip",timeText:"Tijd",hourText:"Uur",minuteText:"Minuut",secondText:"Seconde",millisecText:"Milliseconde",microsecText:"Microseconde",timezoneText:"Tijdzone",currentText:"Vandaag",closeText:"Sluiten",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional.no={timeOnlyTitle:"Velg tid",timeText:"Tid",hourText:"Time",minuteText:"Minutt",secondText:"Sekund",millisecText:"Millisekund",microsecText:"mikrosekund",timezoneText:"Tidssone",currentText:"Nå",closeText:"Lukk",timeFormat:"HH:mm",timeSuffix:"",amNames:["am","AM","A"],pmNames:["pm","PM","P"],isRTL:!1},a.timepicker.regional.pl={timeOnlyTitle:"Wybierz godzinę",timeText:"Czas",hourText:"Godzina",minuteText:"Minuta",secondText:"Sekunda",millisecText:"Milisekunda",microsecText:"Mikrosekunda",timezoneText:"Strefa czasowa",currentText:"Teraz",closeText:"Gotowe",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional["pt-BR"]={timeOnlyTitle:"Escolha o horário",timeText:"Horário",hourText:"Hora",minuteText:"Minutos",secondText:"Segundos",millisecText:"Milissegundos",microsecText:"Microssegundos",timezoneText:"Fuso horário",currentText:"Agora",closeText:"Fechar",timeFormat:"HH:mm",timeSuffix:"",amNames:["a.m.","AM","A"],pmNames:["p.m.","PM","P"],isRTL:!1},a.timepicker.regional.pt={timeOnlyTitle:"Escolha uma hora",timeText:"Hora",hourText:"Horas",minuteText:"Minutos",secondText:"Segundos",millisecText:"Milissegundos",microsecText:"Microssegundos",timezoneText:"Fuso horário",currentText:"Agora",closeText:"Fechar",timeFormat:"HH:mm",timeSuffix:"",amNames:["a.m.","AM","A"],pmNames:["p.m.","PM","P"],isRTL:!1},a.timepicker.regional.ro={timeOnlyTitle:"Alegeţi o oră",timeText:"Timp",hourText:"Ore",minuteText:"Minute",secondText:"Secunde",millisecText:"Milisecunde",microsecText:"Microsecunde",timezoneText:"Fus orar",currentText:"Acum",closeText:"Închide",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional.ru={timeOnlyTitle:"Выберите время",timeText:"Время",hourText:"Часы",minuteText:"Минуты",secondText:"Секунды",millisecText:"Миллисекунды",microsecText:"Микросекунды",timezoneText:"Часовой пояс",currentText:"Сейчас",closeText:"Закрыть",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional.sk={timeOnlyTitle:"Zvoľte čas",timeText:"Čas",hourText:"Hodiny",minuteText:"Minúty",secondText:"Sekundy",millisecText:"Milisekundy",microsecText:"Mikrosekundy",timezoneText:"Časové pásmo",currentText:"Teraz",closeText:"Zavrieť",timeFormat:"H:m",timeSuffix:"",amNames:["dop.","AM","A"],pmNames:["pop.","PM","P"],isRTL:!1},a.timepicker.regional.sl={timeOnlyTitle:"Izberite čas",timeText:"Čas",hourText:"Ura",minuteText:"Minute",secondText:"Sekunde",millisecText:"Milisekunde",microsecText:"Mikrosekunde",timezoneText:"Časovni pas",currentText:"Sedaj",closeText:"Zapri",timeFormat:"HH:mm",timeSuffix:"",amNames:["dop.","AM","A"],pmNames:["pop.","PM","P"],isRTL:!1},a.timepicker.regional.sq={timeOnlyTitle:"Zgjidh orarin",timeText:"Orari",hourText:"Ora",minuteText:"Minuta",secondText:"Sekonda",millisecText:"Minisekonda",microsecText:"Mikrosekonda",timezoneText:"Zona kohore",currentText:"Tani",closeText:"Mbyll",timeFormat:"HH:mm",timeSuffix:"",amNames:["m.","AM","A"],pmNames:["p.","PM","P"],isRTL:!1},a.timepicker.regional["sr-RS"]={timeOnlyTitle:"Одаберите време",timeText:"Време",hourText:"Сати",minuteText:"Минути",secondText:"Секунде",millisecText:"Милисекунде",microsecText:"Микросекунде",timezoneText:"Временска зона",currentText:"Сада",closeText:"Затвори",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional["sr-YU"]={timeOnlyTitle:"Odaberite vreme",timeText:"Vreme",hourText:"Sati",minuteText:"Minuti",secondText:"Sekunde",millisecText:"Milisekunde",microsecText:"Mikrosekunde",timezoneText:"Vremenska zona",currentText:"Sada",closeText:"Zatvori",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional.sv={timeOnlyTitle:"Välj en tid",timeText:"Tid",hourText:"Timme",minuteText:"Minut",secondText:"Sekund",millisecText:"Millisekund",microsecText:"Mikrosekund",timezoneText:"Tidszon",currentText:"Nu",closeText:"Stäng",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional.th={timeOnlyTitle:"เลือกเวลา",timeText:"เวลา ",hourText:"ชั่วโมง ",minuteText:"นาที",secondText:"วินาที",millisecText:"มิลลิวินาที",microsecText:"ไมโคริวินาที",timezoneText:"เขตเวลา",currentText:"เวลาปัจจุบัน",closeText:"ปิด",timeFormat:"hh:mm tt",timeSuffix:""},a.timepicker.regional.tr={timeOnlyTitle:"Zaman Seçiniz",timeText:"Zaman",hourText:"Saat",minuteText:"Dakika",secondText:"Saniye",millisecText:"Milisaniye",microsecText:"Mikrosaniye",timezoneText:"Zaman Dilimi",currentText:"Şu an",closeText:"Tamam",timeFormat:"HH:mm",timeSuffix:"",amNames:["ÖÖ","Ö"],pmNames:["ÖS","S"],isRTL:!1},a.timepicker.regional.uk={timeOnlyTitle:"Виберіть час",timeText:"Час",hourText:"Години",minuteText:"Хвилини",secondText:"Секунди",millisecText:"Мілісекунди",microsecText:"Мікросекунди",timezoneText:"Часовий пояс",currentText:"Зараз",closeText:"Закрити",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional.vi={timeOnlyTitle:"Chọn giờ",timeText:"Thời gian",hourText:"Giờ",minuteText:"Phút",secondText:"Giây",millisecText:"Mili giây",microsecText:"Micrô giây",timezoneText:"Múi giờ",currentText:"Hiện thời",closeText:"Đóng",timeFormat:"HH:mm",timeSuffix:"",amNames:["SA","S"],pmNames:["CH","C"],isRTL:!1},a.timepicker.regional["zh-CN"]={timeOnlyTitle:"选择时间",timeText:"时间",hourText:"小时",minuteText:"分钟",secondText:"秒钟",millisecText:"毫秒",microsecText:"微秒",timezoneText:"时区",currentText:"现在时间",closeText:"关闭",timeFormat:"HH:mm",timeSuffix:"",amNames:["AM","A"],pmNames:["PM","P"],isRTL:!1},a.timepicker.regional["zh-TW"]={timeOnlyTitle:"選擇時分秒",timeText:"時間",hourText:"時",minuteText:"分",secondText:"秒",millisecText:"毫秒",microsecText:"微秒",timezoneText:"時區",currentText:"現在時間",closeText:"確定",timeFormat:"HH:mm",timeSuffix:"",amNames:["上午","AM","A"],pmNames:["下午","PM","P"],isRTL:!1}}(jQuery);
\ No newline at end of file
diff --git a/dist/i18n/jquery-ui-timepicker-af.js b/dist/i18n/jquery-ui-timepicker-af.js
index fe9f8c5..8dbec3e 100644
--- a/dist/i18n/jquery-ui-timepicker-af.js
+++ b/dist/i18n/jquery-ui-timepicker-af.js
@@ -13,6 +13,7 @@
currentText: 'Huidige Tyd',
closeText: 'Klaar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-am.js b/dist/i18n/jquery-ui-timepicker-am.js
index 69cce8a..676c8b9 100644
--- a/dist/i18n/jquery-ui-timepicker-am.js
+++ b/dist/i18n/jquery-ui-timepicker-am.js
@@ -13,6 +13,7 @@
currentText: 'Այժմ',
closeText: 'Փակել',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-bg.js b/dist/i18n/jquery-ui-timepicker-bg.js
index 1efb439..58f076e 100644
--- a/dist/i18n/jquery-ui-timepicker-bg.js
+++ b/dist/i18n/jquery-ui-timepicker-bg.js
@@ -13,6 +13,7 @@
currentText: 'Сега',
closeText: 'Затвори',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-ca.js b/dist/i18n/jquery-ui-timepicker-ca.js
index 25b4eed..84fa00e 100644
--- a/dist/i18n/jquery-ui-timepicker-ca.js
+++ b/dist/i18n/jquery-ui-timepicker-ca.js
@@ -13,6 +13,7 @@
currentText: 'Ara',
closeText: 'Tancar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-cs.js b/dist/i18n/jquery-ui-timepicker-cs.js
index 9d358fa..26d6ec7 100644
--- a/dist/i18n/jquery-ui-timepicker-cs.js
+++ b/dist/i18n/jquery-ui-timepicker-cs.js
@@ -13,6 +13,7 @@
currentText: 'Nyní',
closeText: 'Zavřít',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['dop.', 'AM', 'A'],
pmNames: ['odp.', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-da.js b/dist/i18n/jquery-ui-timepicker-da.js
index 7afb189..5d8072b 100644
--- a/dist/i18n/jquery-ui-timepicker-da.js
+++ b/dist/i18n/jquery-ui-timepicker-da.js
@@ -13,6 +13,7 @@
currentText: 'Nu',
closeText: 'Luk',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['am', 'AM', 'A'],
pmNames: ['pm', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-de.js b/dist/i18n/jquery-ui-timepicker-de.js
index a0ddf9f..90c33af 100644
--- a/dist/i18n/jquery-ui-timepicker-de.js
+++ b/dist/i18n/jquery-ui-timepicker-de.js
@@ -13,6 +13,7 @@
currentText: 'Jetzt',
closeText: 'Fertig',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['vorm.', 'AM', 'A'],
pmNames: ['nachm.', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-el.js b/dist/i18n/jquery-ui-timepicker-el.js
index 6b7e827..72aec6d 100644
--- a/dist/i18n/jquery-ui-timepicker-el.js
+++ b/dist/i18n/jquery-ui-timepicker-el.js
@@ -7,15 +7,16 @@
hourText: 'Ώρες',
minuteText: 'Λεπτά',
secondText: 'Δευτερόλεπτα',
- millisecText: 'μιλιδευτερόλεπτο',
- microsecText: 'Microseconds',
+ millisecText: 'Χιλιοστοδευτερόλεπτα',
+ microsecText: 'Μικροδευτερόλεπτα',
timezoneText: 'Ζώνη ώρας',
currentText: 'Τώρα',
closeText: 'Κλείσιμο',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['π.μ.', 'AM', 'A'],
pmNames: ['μ.μ.', 'PM', 'P'],
isRTL: false
};
$.timepicker.setDefaults($.timepicker.regional['el']);
-})(jQuery);
+})(jQuery);
\ No newline at end of file
diff --git a/dist/i18n/jquery-ui-timepicker-es.js b/dist/i18n/jquery-ui-timepicker-es.js
index d73a1e8..b19ba11 100644
--- a/dist/i18n/jquery-ui-timepicker-es.js
+++ b/dist/i18n/jquery-ui-timepicker-es.js
@@ -1,5 +1,6 @@
/* Spanish translation for the jQuery Timepicker Addon */
/* Written by Ianaré Sévi */
+/* Modified by Carlos Martínez */
(function($) {
$.timepicker.regional['es'] = {
timeOnlyTitle: 'Elegir una hora',
@@ -9,10 +10,11 @@
secondText: 'Segundos',
millisecText: 'Milisegundos',
microsecText: 'Microsegundos',
- timezoneText: 'Huso horario',
- currentText: 'Ahora',
+ timezoneText: 'Uso horario',
+ currentText: 'Hoy',
closeText: 'Cerrar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-et.js b/dist/i18n/jquery-ui-timepicker-et.js
index 2e64cc8..b2bb766 100644
--- a/dist/i18n/jquery-ui-timepicker-et.js
+++ b/dist/i18n/jquery-ui-timepicker-et.js
@@ -13,6 +13,7 @@
currentText: 'Praegu',
closeText: 'Valmis',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-eu.js b/dist/i18n/jquery-ui-timepicker-eu.js
index 8884e4a..7e0c0f3 100644
--- a/dist/i18n/jquery-ui-timepicker-eu.js
+++ b/dist/i18n/jquery-ui-timepicker-eu.js
@@ -14,6 +14,7 @@
currentText: 'Orain',
closeText: 'Itxi',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-fa.js b/dist/i18n/jquery-ui-timepicker-fa.js
new file mode 100644
index 0000000..25e2403
--- /dev/null
+++ b/dist/i18n/jquery-ui-timepicker-fa.js
@@ -0,0 +1,22 @@
+/* Persian translation for the jQuery Timepicker Addon */
+/* Written by Meysam Pour Ganji */
+(function($) {
+ $.timepicker.regional['fa'] = {
+ timeOnlyTitle: 'انتخاب زمان',
+ timeText: 'زمان',
+ hourText: 'ساعت',
+ minuteText: 'دقیقه',
+ secondText: 'ثانیه',
+ millisecText: 'میلی ثانیه',
+ microsecText: 'میکرو ثانیه',
+ timezoneText: 'منطقه زمانی',
+ currentText: 'الان',
+ closeText: 'انتخاب',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['قبل ظهر', 'AM', 'A'],
+ pmNames: ['بعد ظهر', 'PM', 'P'],
+ isRTL: true
+ };
+ $.timepicker.setDefaults($.timepicker.regional['fa']);
+})(jQuery);
diff --git a/dist/i18n/jquery-ui-timepicker-fi.js b/dist/i18n/jquery-ui-timepicker-fi.js
index 3f1d95e..4493d4c 100644
--- a/dist/i18n/jquery-ui-timepicker-fi.js
+++ b/dist/i18n/jquery-ui-timepicker-fi.js
@@ -13,6 +13,7 @@
currentText: 'Nyt',
closeText: 'Sulje',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['ap.', 'AM', 'A'],
pmNames: ['ip.', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-fr.js b/dist/i18n/jquery-ui-timepicker-fr.js
index a8a46fe..0002517 100644
--- a/dist/i18n/jquery-ui-timepicker-fr.js
+++ b/dist/i18n/jquery-ui-timepicker-fr.js
@@ -13,6 +13,7 @@
currentText: 'Maintenant',
closeText: 'Terminé',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-gl.js b/dist/i18n/jquery-ui-timepicker-gl.js
index 900e377..4b9501f 100644
--- a/dist/i18n/jquery-ui-timepicker-gl.js
+++ b/dist/i18n/jquery-ui-timepicker-gl.js
@@ -13,6 +13,7 @@
currentText: 'Agora',
closeText: 'Pechar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-he.js b/dist/i18n/jquery-ui-timepicker-he.js
index eb71018..9b78cbd 100644
--- a/dist/i18n/jquery-ui-timepicker-he.js
+++ b/dist/i18n/jquery-ui-timepicker-he.js
@@ -13,6 +13,7 @@
currentText: "עכשיו",
closeText:"סגור",
timeFormat: "HH:mm",
+ timeSuffix: '',
amNames: ['לפנה"צ', 'AM', 'A'],
pmNames: ['אחה"צ', 'PM', 'P'],
isRTL: true
diff --git a/dist/i18n/jquery-ui-timepicker-hr.js b/dist/i18n/jquery-ui-timepicker-hr.js
index c314b8e..b60f89a 100644
--- a/dist/i18n/jquery-ui-timepicker-hr.js
+++ b/dist/i18n/jquery-ui-timepicker-hr.js
@@ -13,6 +13,7 @@
currentText: 'Sada',
closeText: 'Gotovo',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-hu.js b/dist/i18n/jquery-ui-timepicker-hu.js
index fd1f5e1..6bdb0f4 100644
--- a/dist/i18n/jquery-ui-timepicker-hu.js
+++ b/dist/i18n/jquery-ui-timepicker-hu.js
@@ -13,6 +13,7 @@
currentText: 'Most',
closeText: 'Kész',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['de.', 'AM', 'A'],
pmNames: ['du.', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-id.js b/dist/i18n/jquery-ui-timepicker-id.js
index 50a976b..9f21f50 100644
--- a/dist/i18n/jquery-ui-timepicker-id.js
+++ b/dist/i18n/jquery-ui-timepicker-id.js
@@ -13,6 +13,7 @@
currentText: 'Sekarang',
closeText: 'OK',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-it.js b/dist/i18n/jquery-ui-timepicker-it.js
index ea976fd..540f41a 100644
--- a/dist/i18n/jquery-ui-timepicker-it.js
+++ b/dist/i18n/jquery-ui-timepicker-it.js
@@ -13,6 +13,7 @@
currentText: 'Adesso',
closeText: 'Chiudi',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['m.', 'AM', 'A'],
pmNames: ['p.', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-ja.js b/dist/i18n/jquery-ui-timepicker-ja.js
index 15c7b79..cd3f020 100644
--- a/dist/i18n/jquery-ui-timepicker-ja.js
+++ b/dist/i18n/jquery-ui-timepicker-ja.js
@@ -13,6 +13,7 @@
currentText: '現時刻',
closeText: '閉じる',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['午前', 'AM', 'A'],
pmNames: ['午後', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-ko.js b/dist/i18n/jquery-ui-timepicker-ko.js
index 0a41c5b..ca85b88 100644
--- a/dist/i18n/jquery-ui-timepicker-ko.js
+++ b/dist/i18n/jquery-ui-timepicker-ko.js
@@ -13,6 +13,7 @@
currentText: '현재 시각',
closeText: '닫기',
timeFormat: 'tt h:mm',
+ timeSuffix: '',
amNames: ['오전', 'AM', 'A'],
pmNames: ['오후', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-lt.js b/dist/i18n/jquery-ui-timepicker-lt.js
index eb7b3c7..97d2b8b 100644
--- a/dist/i18n/jquery-ui-timepicker-lt.js
+++ b/dist/i18n/jquery-ui-timepicker-lt.js
@@ -13,6 +13,7 @@
currentText: 'Dabar',
closeText: 'Uždaryti',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['priešpiet', 'AM', 'A'],
pmNames: ['popiet', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-lv.js b/dist/i18n/jquery-ui-timepicker-lv.js
new file mode 100644
index 0000000..0cbd6e6
--- /dev/null
+++ b/dist/i18n/jquery-ui-timepicker-lv.js
@@ -0,0 +1,22 @@
+/* Latvian translation for the jQuery Timepicker Addon */
+/* Written by Dmitry Bogatykh */
+(function($) {
+ $.timepicker.regional['lv'] = {
+ timeOnlyTitle: 'Ievadiet laiku',
+ timeText: 'Laiks',
+ hourText: 'Stundas',
+ minuteText: 'Minūtes',
+ secondText: 'Sekundes',
+ millisecText: 'Milisekundes',
+ microsecText: 'Mikrosekundes',
+ timezoneText: 'Laika josla',
+ currentText: 'Tagad',
+ closeText: 'Aizvērt',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['AM', 'AM', 'A'],
+ pmNames: ['PM', 'PM', 'P'],
+ isRTL: false
+ };
+ $.timepicker.setDefaults($.timepicker.regional['lv']);
+})(jQuery);
\ No newline at end of file
diff --git a/dist/i18n/jquery-ui-timepicker-mk.js b/dist/i18n/jquery-ui-timepicker-mk.js
new file mode 100644
index 0000000..9857e01
--- /dev/null
+++ b/dist/i18n/jquery-ui-timepicker-mk.js
@@ -0,0 +1,22 @@
+/* Macedonian cyrilic translation for the jQuery Timepicker Addon */
+/* Written by Vlatko Ristovski */
+(function($) {
+ $.timepicker.regional['mk'] = {
+ timeOnlyTitle: 'Одберете време',
+ timeText: 'Време',
+ hourText: 'Час',
+ minuteText: 'Минути',
+ secondText: 'Секунди',
+ millisecText: 'Милисекунди',
+ microsecText: 'Микросекунди',
+ timezoneText: 'Временска зона',
+ currentText: 'Сега',
+ closeText: 'Затвори',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['AM', 'A'],
+ pmNames: ['PM', 'P'],
+ isRTL: false
+ };
+ $.timepicker.setDefaults($.timepicker.regional['mk']);
+})(jQuery);
\ No newline at end of file
diff --git a/dist/i18n/jquery-ui-timepicker-nl.js b/dist/i18n/jquery-ui-timepicker-nl.js
index 8189cc4..bc71fc1 100644
--- a/dist/i18n/jquery-ui-timepicker-nl.js
+++ b/dist/i18n/jquery-ui-timepicker-nl.js
@@ -13,6 +13,7 @@
currentText: 'Vandaag',
closeText: 'Sluiten',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-no.js b/dist/i18n/jquery-ui-timepicker-no.js
index 1eeee6d..39f32fd 100644
--- a/dist/i18n/jquery-ui-timepicker-no.js
+++ b/dist/i18n/jquery-ui-timepicker-no.js
@@ -13,6 +13,7 @@
currentText: 'Nå',
closeText: 'Lukk',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['am', 'AM', 'A'],
pmNames: ['pm', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-pl.js b/dist/i18n/jquery-ui-timepicker-pl.js
index 5b7d4a9..0a67a79 100644
--- a/dist/i18n/jquery-ui-timepicker-pl.js
+++ b/dist/i18n/jquery-ui-timepicker-pl.js
@@ -13,6 +13,7 @@
currentText: 'Teraz',
closeText: 'Gotowe',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-pt-BR.js b/dist/i18n/jquery-ui-timepicker-pt-BR.js
index 2c1b02f..0ad06a3 100644
--- a/dist/i18n/jquery-ui-timepicker-pt-BR.js
+++ b/dist/i18n/jquery-ui-timepicker-pt-BR.js
@@ -13,6 +13,7 @@
currentText: 'Agora',
closeText: 'Fechar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-pt.js b/dist/i18n/jquery-ui-timepicker-pt.js
index bc549e0..0aa792e 100644
--- a/dist/i18n/jquery-ui-timepicker-pt.js
+++ b/dist/i18n/jquery-ui-timepicker-pt.js
@@ -13,6 +13,7 @@
currentText: 'Agora',
closeText: 'Fechar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-ro.js b/dist/i18n/jquery-ui-timepicker-ro.js
index 01acce7..4f5f386 100644
--- a/dist/i18n/jquery-ui-timepicker-ro.js
+++ b/dist/i18n/jquery-ui-timepicker-ro.js
@@ -13,6 +13,7 @@
currentText: 'Acum',
closeText: 'Închide',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-ru.js b/dist/i18n/jquery-ui-timepicker-ru.js
index d7169fa..b539a73 100644
--- a/dist/i18n/jquery-ui-timepicker-ru.js
+++ b/dist/i18n/jquery-ui-timepicker-ru.js
@@ -13,6 +13,7 @@
currentText: 'Сейчас',
closeText: 'Закрыть',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-sk.js b/dist/i18n/jquery-ui-timepicker-sk.js
index 15700e0..eee0d0b 100644
--- a/dist/i18n/jquery-ui-timepicker-sk.js
+++ b/dist/i18n/jquery-ui-timepicker-sk.js
@@ -13,6 +13,7 @@
currentText: 'Teraz',
closeText: 'Zavrieť',
timeFormat: 'H:m',
+ timeSuffix: '',
amNames: ['dop.', 'AM', 'A'],
pmNames: ['pop.', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-sl.js b/dist/i18n/jquery-ui-timepicker-sl.js
new file mode 100644
index 0000000..0906b10
--- /dev/null
+++ b/dist/i18n/jquery-ui-timepicker-sl.js
@@ -0,0 +1,22 @@
+/* Slovenian translation for the jQuery Timepicker Addon */
+/* Written by Hadalin (https://github.com/hadalin) */
+(function($) {
+ $.timepicker.regional['sl'] = {
+ timeOnlyTitle: 'Izberite čas',
+ timeText: 'Čas',
+ hourText: 'Ura',
+ minuteText: 'Minute',
+ secondText: 'Sekunde',
+ millisecText: 'Milisekunde',
+ microsecText: 'Mikrosekunde',
+ timezoneText: 'Časovni pas',
+ currentText: 'Sedaj',
+ closeText: 'Zapri',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['dop.', 'AM', 'A'],
+ pmNames: ['pop.', 'PM', 'P'],
+ isRTL: false
+ };
+ $.timepicker.setDefaults($.timepicker.regional['sl']);
+})(jQuery);
diff --git a/dist/i18n/jquery-ui-timepicker-sq.js b/dist/i18n/jquery-ui-timepicker-sq.js
new file mode 100644
index 0000000..d93d88c
--- /dev/null
+++ b/dist/i18n/jquery-ui-timepicker-sq.js
@@ -0,0 +1,22 @@
+/* Albanian translation for the jQuery Timepicker Addon */
+/* Written by Olti Buzi */
+(function($) {
+ $.timepicker.regional['sq'] = {
+ timeOnlyTitle: 'Zgjidh orarin',
+ timeText: 'Orari',
+ hourText: 'Ora',
+ minuteText: 'Minuta',
+ secondText: 'Sekonda',
+ millisecText: 'Minisekonda',
+ microsecText: 'Mikrosekonda',
+ timezoneText: 'Zona kohore',
+ currentText: 'Tani',
+ closeText: 'Mbyll',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['m.', 'AM', 'A'],
+ pmNames: ['p.', 'PM', 'P'],
+ isRTL: false
+ };
+ $.timepicker.setDefaults($.timepicker.regional['sq']);
+})(jQuery);
\ No newline at end of file
diff --git a/dist/i18n/jquery-ui-timepicker-sr-RS.js b/dist/i18n/jquery-ui-timepicker-sr-RS.js
index 1ee4aae..79a9803 100644
--- a/dist/i18n/jquery-ui-timepicker-sr-RS.js
+++ b/dist/i18n/jquery-ui-timepicker-sr-RS.js
@@ -13,6 +13,7 @@
currentText: 'Сада',
closeText: 'Затвори',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-sr-YU.js b/dist/i18n/jquery-ui-timepicker-sr-YU.js
index cb99fb8..260881a 100644
--- a/dist/i18n/jquery-ui-timepicker-sr-YU.js
+++ b/dist/i18n/jquery-ui-timepicker-sr-YU.js
@@ -13,6 +13,7 @@
currentText: 'Sada',
closeText: 'Zatvori',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-sv.js b/dist/i18n/jquery-ui-timepicker-sv.js
index 4540ac6..7bb0e7e 100644
--- a/dist/i18n/jquery-ui-timepicker-sv.js
+++ b/dist/i18n/jquery-ui-timepicker-sv.js
@@ -13,6 +13,7 @@
currentText: 'Nu',
closeText: 'Stäng',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-th.js b/dist/i18n/jquery-ui-timepicker-th.js
index 7042e8c..4eb93a5 100644
--- a/dist/i18n/jquery-ui-timepicker-th.js
+++ b/dist/i18n/jquery-ui-timepicker-th.js
@@ -12,7 +12,8 @@
timezoneText: 'เขตเวลา',
currentText: 'เวลาปัจจุบัน',
closeText: 'ปิด',
- timeFormat: 'hh:mm tt'
+ timeFormat: 'hh:mm tt',
+ timeSuffix: ''
};
$.timepicker.setDefaults($.timepicker.regional['th']);
})(jQuery);
\ No newline at end of file
diff --git a/dist/i18n/jquery-ui-timepicker-tr.js b/dist/i18n/jquery-ui-timepicker-tr.js
index 51f89d6..f426e70 100644
--- a/dist/i18n/jquery-ui-timepicker-tr.js
+++ b/dist/i18n/jquery-ui-timepicker-tr.js
@@ -13,6 +13,7 @@
currentText: 'Şu an',
closeText: 'Tamam',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['ÖÖ', 'Ö'],
pmNames: ['ÖS', 'S'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-uk.js b/dist/i18n/jquery-ui-timepicker-uk.js
index a239fe2..285c8ba 100644
--- a/dist/i18n/jquery-ui-timepicker-uk.js
+++ b/dist/i18n/jquery-ui-timepicker-uk.js
@@ -13,6 +13,7 @@
currentText: 'Зараз',
closeText: 'Закрити',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-vi.js b/dist/i18n/jquery-ui-timepicker-vi.js
index 60d712a..59fddae 100644
--- a/dist/i18n/jquery-ui-timepicker-vi.js
+++ b/dist/i18n/jquery-ui-timepicker-vi.js
@@ -13,6 +13,7 @@
currentText: 'Hiện thời',
closeText: 'Đóng',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['SA', 'S'],
pmNames: ['CH', 'C'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-zh-CN.js b/dist/i18n/jquery-ui-timepicker-zh-CN.js
index e73ac3b..a5ca804 100644
--- a/dist/i18n/jquery-ui-timepicker-zh-CN.js
+++ b/dist/i18n/jquery-ui-timepicker-zh-CN.js
@@ -13,6 +13,7 @@
currentText: '现在时间',
closeText: '关闭',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-zh-TW.js b/dist/i18n/jquery-ui-timepicker-zh-TW.js
index 9cbeabf..762797b 100644
--- a/dist/i18n/jquery-ui-timepicker-zh-TW.js
+++ b/dist/i18n/jquery-ui-timepicker-zh-TW.js
@@ -13,6 +13,7 @@
currentText: '現在時間',
closeText: '確定',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['上午', 'AM', 'A'],
pmNames: ['下午', 'PM', 'P'],
isRTL: false
diff --git a/dist/index.html b/dist/index.html
index 98ca2bd..8e9f36d 100644
--- a/dist/index.html
+++ b/dist/index.html
@@ -1,12 +1,12 @@
-
-
-
+
+
+
- Adding a Timepicker to jQuery UI Datepicker
+ Adding a Timepicker to jQuery UI Datepicker
-
-
-
-
+
+
+
-
-
-
+
+
+
-
Adding a Timepicker to jQuery UI Datepicker
-
+
Adding a Timepicker to jQuery UI Datepicker
+
The timepicker addon adds a timepicker to jQuery UI Datepicker, thus the datepicker and slider components (jQueryUI) are required for using any of these. In addition all datepicker options are still available through the timepicker addon.
-
+
If you are interested in contributing to Timepicker Addon please check it out on GitHub . If you do make additions please keep in mind I enjoy tabs over spaces,.. But contributions are welcome in any form.
-
+
Back to Blog or Follow on Twitter
-
-
Try my new app to keep you informed of your car's financing status and value.
Donation
Has this Timepicker Addon been helpful to you?
@@ -73,6 +71,7 @@
Donation
Localization
Examples
+
@@ -96,22 +95,11 @@
Subscribe to Blog and Twitter
Download
-
Download Timepicker Addon
+
Download Timepicker Addon and the required CSS .
+
Download/Contribute on GitHub (Need the entire repo? Find a bug? See if its fixed here)
-
There is a small bit of required CSS (Download ):
-
/* css for timepicker */
-.ui-timepicker-div .ui-widget-header { margin-bottom: 8px; }
-.ui-timepicker-div dl { text-align: left; }
-.ui-timepicker-div dl dt { float: left; clear:left; padding: 0 0 0 5px; }
-.ui-timepicker-div dl dd { margin: 0 10px 10px 45%; }
-.ui-timepicker-div td { font-size: 90%; }
-.ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; }
-
-.ui-timepicker-rtl{ direction: rtl; }
-.ui-timepicker-rtl dl { text-align: right; padding: 0 5px 0 0; }
-.ui-timepicker-rtl dl dt{ float: right; clear: right; }
-.ui-timepicker-rtl dl dd { margin: 0 45% 10px 10px; }
-
+
+
If you prefer a hosted CDN there are a couple available: CDNJS , jsDelivr .
Requirements
@@ -124,9 +112,9 @@
Requirements
Version
-
Version 1.4.5
+
Version 1.6.3
-
Last updated on 2014-05-26
+
Last updated on 2016-04-20
jQuery Timepicker Addon is currently available for use in all personal or commercial projects under the MIT license.
MIT License
@@ -336,13 +324,19 @@
Other Options
showButtonPanel
Default: true - Whether to show the button panel at the bottom. This is generally needed.
-
+
+ timeInput
+ Default: false - Allows direct input in time field
+
timeOnly
Default: false - Hide the datepicker and only provide a time interface.
timeOnlyShowDate
Default: false - Show the date and time in the input, but only allow the timepicker.
+ afterInject
+ Default: null - Function to be called when the timepicker or selection control is injected or re-rendered. Called in the context of the timepicker instance.
+
onSelect
Default: null - Function to be called when a date is chosen or time has changed (parameters: datetimeText, datepickerInstance).
@@ -361,6 +355,9 @@ Other Options
showTimepicker
Default: true - Whether to show the timepicker within the datepicker.
+ oneLine
+ Default: false - Try to show the time dropdowns all on one line. This should be used with controlType 'select' and as few units as possible.
+
addSliderAccess
Default: false - Adds the sliderAccess plugin to sliders within timepicker
@@ -459,7 +456,8 @@ Working with Localizations
closeText: 'Закрыть'
});
- However, if you plan to use timepicker extensively you will need to include (build your own) localization. It is simply assigning those same variables to an object. As you see in the example below we maintain a separate object for timepicker. This way we aren't bound to any changes within datepicker.
+ However, if you plan to use timepicker extensively you will need to include (build your own) localization. It is simply assigning those same variables to an object.
+ As you see in the example below we maintain a separate object for timepicker. This way we aren't bound to any future changes within datepicker.
$.datepicker.regional['ru'] = {
closeText: 'Закрыть',
@@ -500,8 +498,14 @@ Working with Localizations
};
$.timepicker.setDefaults($.timepicker.regional['ru']);
+
Now all you have to do is call timepicker and the Russian localization is used. Generally you only need to include the localization file, it will setDefaults() for you.
- You can also visit localization for datepicker for more information about datepicker localizations.
+ As of version 1.4.5 a combined file of all localizations available is included. This file DOES NOT call setDefaults(), so you will need to pass, or merge with your options.
+
+$('#example123').timepicker($.timepicker.regional['ru']);
+
+
+ Localization files for datepicker are typically available in your jQueryUI downloads.
@@ -515,7 +519,9 @@ Examples
Using Timezones
Slider Modifications
Alternate Fields
+ Time Input
Time Restraints
+ Time Ranges
Utilities
@@ -557,6 +563,20 @@ Basic Initializations
+
+
+
+
Timepicker comes with a collection of localization files and one combined file with all available localizations. $.timepicker.regional["your localization code here"] is a simple object with preset options:
+
+
+
+
+$('#basic_example_4').timepicker(
+ $.timepicker.regional['es']
+);
+
+
+
Using Timezones
@@ -588,27 +608,6 @@ Using Timezones
{ value: -480, label: 'Pacific' }
]
});
-
-
-
-
-
-
You may also use timezone string abbreviations for values. This should be used with caution. Computing accurate javascript Date objects may not be possible when trying to retrieve or set the date from timepicker (see setDate and getDate examples below). For simple input values however this should work.
-
-
-
-
-$('#timezone_example_3').datetimepicker({
- timeFormat: 'HH:mm z',
- timezone: 'MT',
- timezoneList: [
- { value: 'ET', label: 'Eastern'},
- { value: 'CT', label: 'Central' },
- { value: 'MT', label: 'Mountain' },
- { value: 'PT', label: 'Pacific' }
- ]
-});
-
@@ -671,6 +670,20 @@ Slider Modifications
});
+
+
+
Uses one line dropdowns instead of sliders.
+
+
+
+
+$('#slider_example_4andHalf').datetimepicker({
+ controlType: 'select',
+ oneLine: true,
+ timeFormat: 'hh:mm tt'
+});
+
+
Create your own control by implementing the create, options, and value methods. If you want to use your new control for all instances use the $.timepicker.setDefaults({controlType:myControl}). Here we implement jQueryUI's spinner control (jQueryUI 1.9+).
@@ -764,7 +777,7 @@
Alternate Fields
});
-
+
With inline mode using altField:
@@ -777,6 +790,38 @@
Alternate Fields
altField: "#alt_example_4_alt",
altFieldTimeOnly: false
});
+
+
+
+
+
+
+
+
Allows time displayed inside the picker to allow being typed in.
+
+
+
+
+$('#input_example_1').datetimepicker({
+ timeInput: true,
+ timeFormat: "hh:mm tt"
+});
+
+
+
+
+
+
Don't show any sliders, only the time input.
+
+
+
+
+$('#input_example_2').datetimepicker({
+ timeInput: true,
+ timeFormat: "hh:mm tt",
+ showHour: false,
+ showMinute: false
+});
@@ -825,17 +870,20 @@ Time Restraints
+
+ Time Ranges
+
+
+
+
+
Timepicker also includes some shortcut methods for ranges:
+
+
+
+
+
+var startDateTextBox = $('#range_example_2_start');
+var endDateTextBox = $('#range_example_2_end');
+
+$.timepicker.datetimeRange(
+ startDateTextBox,
+ endDateTextBox,
+ {
+ minInterval: (1000*60*60), // 1hr
+ dateFormat: 'dd M yy',
+ timeFormat: 'HH:mm',
+ start: {}, // start picker options
+ end: {} // end picker options
+ }
+);
+
+
+
+
+
+
To use only times for a time range use $.timepicker.timeRange():
+
+
+
+
+
+var startTimeTextBox = $('#range_example_3_start');
+var endTimeTextBox = $('#range_example_3_end');
+
+$.timepicker.timeRange(
+ startTimeTextBox,
+ endTimeTextBox,
+ {
+ minInterval: (1000*60*60), // 1hr
+ timeFormat: 'HH:mm',
+ start: {}, // start picker options
+ end: {} // end picker options
+ }
+);
+
+
+
+
+
@@ -942,9 +1063,8 @@ Utilities
$.datepicker.parseTime('HH:mm:ss:l z', "14:36:21:765 +2000", {})
));
-
-
+
@@ -952,8 +1072,9 @@ Utilities
-
+
+
-
-
-
+
+ } catch(err) {}
+ -->
\ No newline at end of file
diff --git a/dist/jquery-ui-timepicker-addon.css b/dist/jquery-ui-timepicker-addon.css
index da12d98..586a7f0 100644
--- a/dist/jquery-ui-timepicker-addon.css
+++ b/dist/jquery-ui-timepicker-addon.css
@@ -4,8 +4,27 @@
.ui-timepicker-div dl dd { margin: 0 10px 10px 40%; }
.ui-timepicker-div td { font-size: 90%; }
.ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; }
+.ui-timepicker-div .ui_tpicker_unit_hide{ display: none; }
+
+.ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input { background: none; color: inherit; border: none; outline: none; border-bottom: solid 1px #555; width: 95%; }
+.ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input:focus { border-bottom-color: #aaa; }
.ui-timepicker-rtl{ direction: rtl; }
.ui-timepicker-rtl dl { text-align: right; padding: 0 5px 0 0; }
.ui-timepicker-rtl dl dt{ float: right; clear: right; }
-.ui-timepicker-rtl dl dd { margin: 0 40% 10px 10px; }
\ No newline at end of file
+.ui-timepicker-rtl dl dd { margin: 0 40% 10px 10px; }
+
+/* Shortened version style */
+.ui-timepicker-div.ui-timepicker-oneLine { padding-right: 2px; }
+.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time,
+.ui-timepicker-div.ui-timepicker-oneLine dt { display: none; }
+.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time_label { display: block; padding-top: 2px; }
+.ui-timepicker-div.ui-timepicker-oneLine dl { text-align: right; }
+.ui-timepicker-div.ui-timepicker-oneLine dl dd,
+.ui-timepicker-div.ui-timepicker-oneLine dl dd > div { display:inline-block; margin:0; }
+.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_minute:before,
+.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_second:before { content:':'; display:inline-block; }
+.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_millisec:before,
+.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_microsec:before { content:'.'; display:inline-block; }
+.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide,
+.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide:before{ display: none; }
\ No newline at end of file
diff --git a/dist/jquery-ui-timepicker-addon.js b/dist/jquery-ui-timepicker-addon.js
index 66a12d3..d37bc02 100644
--- a/dist/jquery-ui-timepicker-addon.js
+++ b/dist/jquery-ui-timepicker-addon.js
@@ -1,7 +1,13 @@
-/*! jQuery Timepicker Addon - v1.4.5 - 2014-05-26
+/*! jQuery Timepicker Addon - v1.6.3 - 2016-04-20
* http://trentrichardson.com/examples/timepicker
-* Copyright (c) 2014 Trent Richardson; Licensed MIT */
-(function ($) {
+* Copyright (c) 2016 Trent Richardson; Licensed MIT */
+(function (factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery', 'jquery-ui'], factory);
+ } else {
+ factory(jQuery);
+ }
+}(function ($) {
/*
* Lets not redefine timepicker, Prevent "Uncaught RangeError: Maximum call stack size exceeded"
@@ -16,11 +22,11 @@
*/
$.extend($.ui, {
timepicker: {
- version: "1.4.5"
+ version: "1.6.3"
}
});
- /*
+ /*
* Timepicker manager.
* Use the singleton instance of this class, $.timepicker, to interact with the time picker.
* Settings for (groups of) time pickers are maintained in an instance object,
@@ -101,8 +107,10 @@
addSliderAccess: false,
sliderAccessArgs: null,
controlType: 'slider',
+ oneLine: false,
defaultValue: null,
- parse: 'strict'
+ parse: 'strict',
+ afterInject: null
};
$.extend(this._defaults, this.regional['']);
};
@@ -145,7 +153,7 @@
support: {},
control: null,
- /*
+ /*
* Override the default settings for all instances of the time picker.
* @param {Object} settings object - the new settings to use as defaults (anonymous object)
* @return {Object} the manager object
@@ -185,7 +193,7 @@
},
onChangeMonthYear: function (year, month, dp_inst) {
// Update the time as well : this prevents the time from disappearing from the $input field.
- tp_inst._updateDateTime(dp_inst);
+ // tp_inst._updateDateTime(dp_inst);
if ($.isFunction(tp_inst._defaults.evnts.onChangeMonthYear)) {
tp_inst._defaults.evnts.onChangeMonthYear.call($input[0], year, month, dp_inst, tp_inst);
}
@@ -201,7 +209,7 @@
};
for (i in overrides) {
if (overrides.hasOwnProperty(i)) {
- fns[i] = opts[i] || null;
+ fns[i] = opts[i] || this._defaults[i] || null;
}
}
@@ -218,7 +226,7 @@
// detect which units are supported
tp_inst.support = detectSupport(
- tp_inst._defaults.timeFormat +
+ tp_inst._defaults.timeFormat +
(tp_inst._defaults.pickerTimeFormat ? tp_inst._defaults.pickerTimeFormat : '') +
(tp_inst._defaults.altTimeFormat ? tp_inst._defaults.altTimeFormat : ''));
@@ -307,11 +315,12 @@
* add our sliders to the calendar
*/
_addTimePicker: function (dp_inst) {
- var currDT = (this.$altInput && this._defaults.altFieldTimeOnly) ? this.$input.val() + ' ' + this.$altInput.val() : this.$input.val();
+ var currDT = $.trim((this.$altInput && this._defaults.altFieldTimeOnly) ? this.$input.val() + ' ' + this.$altInput.val() : this.$input.val());
this.timeDefined = this._parseTime(currDT);
this._limitMinMaxDateTime(dp_inst, false);
this._injectTimePicker();
+ this._afterInject();
},
/*
@@ -348,6 +357,16 @@
}
},
+ /*
+ * Handle callback option after injecting timepicker
+ */
+ _afterInject: function() {
+ var o = this.inst.settings;
+ if ($.isFunction(o.afterInject)) {
+ o.afterInject.call(this);
+ }
+ },
+
/*
* generate and inject html for timepicker into ui datepicker
*/
@@ -366,9 +385,9 @@
// Prevent displaying twice
if ($dp.find("div.ui-timepicker-div").length === 0 && o.showTimepicker) {
- var noDisplay = ' style="display:none;"',
- html = '' + '' + o.timeText + ' ' +
- ' ';
+ var noDisplay = ' ui_tpicker_unit_hide',
+ html = '' + '' + o.timeText + ' ' +
+ ' ';
// Create the markup
for (i = 0, l = this.units.length; i < l; i++) {
@@ -382,8 +401,8 @@
max[litem] = parseInt((o[litem + 'Max'] - ((o[litem + 'Max'] - o[litem + 'Min']) % o['step' + uitem])), 10);
gridSize[litem] = 0;
- html += '' + o[litem + 'Text'] + ' ' +
- '
';
+ html += '' + o[litem + 'Text'] + ' ' +
+ '
';
if (show && o[litem + 'Grid'] > 0) {
html += '';
@@ -406,11 +425,11 @@
}
html += '';
}
-
+
// Timezone
var showTz = o.showTimezone !== null ? o.showTimezone : this.support.timezone;
- html += '' + o.timezoneText + ' ';
- html += ' ';
+ html += '' + o.timezoneText + ' ';
+ html += ' ';
// Create the elements from string
html += '';
@@ -421,7 +440,7 @@
$tp.prepend('');
$dp.find('.ui-datepicker-header, .ui-datepicker-calendar').hide();
}
-
+
// add sliders, adjust grids, add events
for (i = 0, l = tp_inst.units.length; i < l; i++) {
litem = tp_inst.units[i];
@@ -456,7 +475,7 @@
}
}
}
-
+
tp_inst.control.value(tp_inst, tp_inst[f + '_slider'], litem, n);
tp_inst._onTimeChange();
@@ -493,9 +512,10 @@
this.timezone_select.change(function () {
tp_inst._onTimeChange();
tp_inst._onSelectHandler();
+ tp_inst._afterInject();
});
// End timezone options
-
+
// inject timepicker into datepicker
var $buttonPanel = $dp.find('.ui-datepicker-buttonpane');
if ($buttonPanel.length) {
@@ -504,7 +524,21 @@
$dp.append($tp);
}
- this.$timeObj = $tp.find('.ui_tpicker_time');
+ this.$timeObj = $tp.find('.ui_tpicker_time_input');
+ this.$timeObj.change(function () {
+ var timeFormat = tp_inst.inst.settings.timeFormat;
+ var parsedTime = $.datepicker.parseTime(timeFormat, this.value);
+ var update = new Date();
+ if (parsedTime) {
+ update.setHours(parsedTime.hour);
+ update.setMinutes(parsedTime.minute);
+ update.setSeconds(parsedTime.second);
+ $.datepicker._setTime(tp_inst.inst, update);
+ } else {
+ this.value = tp_inst.formattedTime;
+ this.blur();
+ }
+ });
if (this.inst !== null) {
var timeDefined = this.timeDefined;
@@ -517,7 +551,7 @@
var sliderAccessArgs = this._defaults.sliderAccessArgs,
rtl = this._defaults.isRTL;
sliderAccessArgs.isRTL = rtl;
-
+
setTimeout(function () { // fix for inline mode
if ($tp.find('.ui-slider-access').length === 0) {
$tp.find('.ui-slider:visible').sliderAccess(sliderAccessArgs);
@@ -669,44 +703,44 @@
}
}
- if (dp_inst.settings.minTime!==null) {
- var tempMinTime=new Date("01/01/1970 " + dp_inst.settings.minTime);
+ if (dp_inst.settings.minTime!==null) {
+ var tempMinTime=new Date("01/01/1970 " + dp_inst.settings.minTime);
if (this.hourtempMaxTime.getHours()) {
- this.hour=this._defaults.hourMax=tempMaxTime.getHours();
+ this.hour=this._defaults.hourMax=tempMaxTime.getHours();
+ this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
+ } else if (this.hour===tempMaxTime.getHours() && this.minute>tempMaxTime.getMinutes()) {
this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
- } else if (this.hour===tempMaxTime.getHours() && this.minute>tempMaxTime.getMinutes()) {
- this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
} else {
if (this._defaults.hourMax>tempMaxTime.getHours()) {
this._defaults.hourMax=tempMaxTime.getHours();
- this._defaults.minuteMax=tempMaxTime.getMinutes();
+ this._defaults.minuteMax=tempMaxTime.getMinutes();
} else if (this._defaults.hourMax===tempMaxTime.getHours()===this.hour && this._defaults.minuteMax>tempMaxTime.getMinutes()) {
- this._defaults.minuteMax=tempMaxTime.getMinutes();
+ this._defaults.minuteMax=tempMaxTime.getMinutes();
} else {
this._defaults.minuteMax=59;
}
- }
+ }
}
-
+
if (adjustSliders !== undefined && adjustSliders === true) {
var hourMax = parseInt((this._defaults.hourMax - ((this._defaults.hourMax - this._defaults.hourMin) % this._defaults.stepHour)), 10),
minMax = parseInt((this._defaults.minuteMax - ((this._defaults.minuteMax - this._defaults.minuteMin) % this._defaults.stepMinute)), 10),
@@ -800,11 +834,11 @@
// If the update was done using the sliders, update the input field.
var hasChanged = (
hour !== parseInt(this.hour,10) || // sliders should all be numeric
- minute !== parseInt(this.minute,10) ||
- second !== parseInt(this.second,10) ||
- millisec !== parseInt(this.millisec,10) ||
- microsec !== parseInt(this.microsec,10) ||
- (this.ampm.length > 0 && (hour < 12) !== ($.inArray(this.ampm.toUpperCase(), this.amNames) !== -1)) ||
+ minute !== parseInt(this.minute,10) ||
+ second !== parseInt(this.second,10) ||
+ millisec !== parseInt(this.millisec,10) ||
+ microsec !== parseInt(this.microsec,10) ||
+ (this.ampm.length > 0 && (hour < 12) !== ($.inArray(this.ampm.toUpperCase(), this.amNames) !== -1)) ||
(this.timezone !== null && timezone !== this.timezone.toString()) // could be numeric or "EST" format, so use toString()
);
@@ -843,10 +877,15 @@
this.formattedTime = $.datepicker.formatTime(o.timeFormat, this, o);
if (this.$timeObj) {
if (pickerTimeFormat === o.timeFormat) {
- this.$timeObj.text(this.formattedTime + pickerTimeSuffix);
+ this.$timeObj.val(this.formattedTime + pickerTimeSuffix);
}
else {
- this.$timeObj.text($.datepicker.formatTime(pickerTimeFormat, this, o) + pickerTimeSuffix);
+ this.$timeObj.val($.datepicker.formatTime(pickerTimeFormat, this, o) + pickerTimeSuffix);
+ }
+ if (this.$timeObj[0].setSelectionRange) {
+ var sPos = this.$timeObj[0].selectionStart;
+ var ePos = this.$timeObj[0].selectionEnd;
+ this.$timeObj[0].setSelectionRange(sPos, ePos);
}
}
@@ -874,8 +913,8 @@
*/
_updateDateTime: function (dp_inst) {
dp_inst = this.inst || dp_inst;
- var dtTmp = (dp_inst.currentYear > 0?
- new Date(dp_inst.currentYear, dp_inst.currentMonth, dp_inst.currentDay) :
+ var dtTmp = (dp_inst.currentYear > 0?
+ new Date(dp_inst.currentYear, dp_inst.currentMonth, dp_inst.currentDay) :
new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),
dt = $.datepicker._daylightSavingAdjust(dtTmp),
//dt = $.datepicker._daylightSavingAdjust(new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),
@@ -885,7 +924,7 @@
timeAvailable = dt !== null && this.timeDefined;
this.formattedDate = $.datepicker.formatDate(dateFmt, (dt === null ? new Date() : dt), formatCfg);
var formattedDateTime = this.formattedDate;
-
+
// if a slider was changed but datepicker doesn't have a value yet, set it
if (dp_inst.lastVal === "") {
dp_inst.currentYear = dp_inst.selectedYear;
@@ -895,7 +934,7 @@
/*
* remove following lines to force every changes in date picker to change the input value
- * Bug descriptions: when an input field has a default value, and click on the field to pop up the date picker.
+ * Bug descriptions: when an input field has a default value, and click on the field to pop up the date picker.
* If the user manually empty the value in the input field, the date picker will never change selected value.
*/
//if (dp_inst.lastVal !== undefined && (dp_inst.lastVal.length > 0 && this.$input.val().length === 0)) {
@@ -920,7 +959,7 @@
var altFormattedDateTime = '',
altSeparator = this._defaults.altSeparator !== null ? this._defaults.altSeparator : this._defaults.separator,
altTimeSuffix = this._defaults.altTimeSuffix !== null ? this._defaults.altTimeSuffix : this._defaults.timeSuffix;
-
+
if (!this._defaults.timeOnly) {
if (this._defaults.altFormat) {
altFormattedDateTime = $.datepicker.formatDate(this._defaults.altFormat, (dt === null ? new Date() : dt), formatCfg);
@@ -987,7 +1026,7 @@
stop: function (event, ui) {
tp_inst._onSelectHandler();
}
- });
+ });
},
options: function (tp_inst, obj, unit, opts, val) {
if (tp_inst._defaults.isRTL) {
@@ -1000,7 +1039,7 @@
}
return obj.slider(opts);
}
- var min = opts.min,
+ var min = opts.min,
max = opts.max;
opts.min = opts.max = null;
if (min !== undefined) {
@@ -1032,7 +1071,7 @@
// select methods
select: {
create: function (tp_inst, obj, unit, val, min, max, step) {
- var sel = '',
+ var sel = '',
format = tp_inst._defaults.pickerTimeFormat || tp_inst._defaults.timeFormat;
for (var i = min; i <= max; i += step) {
@@ -1051,6 +1090,7 @@
$(sel).appendTo(obj).change(function (e) {
tp_inst._onTimeChange();
tp_inst._onSelectHandler();
+ tp_inst._afterInject();
});
return obj;
@@ -1062,10 +1102,10 @@
if (val === undefined) {
return $t.data(opts);
}
- o[opts] = val;
+ o[opts] = val;
}
else { o = opts; }
- return tp_inst.control.create(tp_inst, obj, $t.data('unit'), $t.val(), o.min || $t.data('min'), o.max || $t.data('max'), o.step || $t.data('step'));
+ return tp_inst.control.create(tp_inst, obj, $t.data('unit'), $t.val(), o.min>=0 ? o.min : $t.data('min'), o.max || $t.data('max'), o.step || $t.data('step'));
},
value: function (tp_inst, obj, unit, val) {
var $t = obj.children('select');
@@ -1229,7 +1269,7 @@
ampm = '';
resTime.ampm = '';
} else {
- ampm = $.inArray(treg[order.t].toUpperCase(), o.amNames) !== -1 ? 'AM' : 'PM';
+ ampm = $.inArray(treg[order.t].toUpperCase(), $.map(o.amNames, function (x,i) { return x.toUpperCase(); })) !== -1 ? 'AM' : 'PM';
resTime.ampm = o[ampm === 'AM' ? 'amNames' : 'pmNames'][0];
}
}
@@ -1297,11 +1337,11 @@
}
catch (err2) {
$.timepicker.log("Unable to parse \ntimeString: " + s + "\ntimeFormat: " + f);
- }
+ }
}
return false;
}; // end looseParse
-
+
if (typeof o.parse === "function") {
return o.parse(timeFormat, timeString, o);
}
@@ -1387,14 +1427,17 @@
$.datepicker._base_selectDate = $.datepicker._selectDate;
$.datepicker._selectDate = function (id, dateStr) {
var inst = this._getInst($(id)[0]),
- tp_inst = this._get(inst, 'timepicker');
+ tp_inst = this._get(inst, 'timepicker'),
+ was_inline;
if (tp_inst && inst.settings.showTimepicker) {
tp_inst._limitMinMaxDateTime(inst, true);
+ was_inline = inst.inline;
inst.inline = inst.stay_open = true;
//This way the onSelect handler called from calendarpicker get the full dateTime
this._base_selectDate(id, dateStr);
- inst.inline = inst.stay_open = false;
+ inst.inline = was_inline;
+ inst.stay_open = false;
this._notifyChange(inst);
this._updateDatepicker(inst);
} else {
@@ -1447,11 +1490,11 @@
.replace(/tT/g, ampm ? 'AaPpMm' : '')
.replace(/T/g, ampm ? 'AP' : '')
.replace(/tt/g, ampm ? 'apm' : '')
- .replace(/t/g, ampm ? 'ap' : '') +
- " " + tp_inst._defaults.separator +
- tp_inst._defaults.timeSuffix +
- (tz ? tp_inst._defaults.timezoneList.join('') : '') +
- (tp_inst._defaults.amNames.join('')) + (tp_inst._defaults.pmNames.join('')) +
+ .replace(/t/g, ampm ? 'ap' : '') +
+ " " + tp_inst._defaults.separator +
+ tp_inst._defaults.timeSuffix +
+ (tz ? tp_inst._defaults.timezoneList.join('') : '') +
+ (tp_inst._defaults.amNames.join('')) + (tp_inst._defaults.pmNames.join('')) +
dateChars,
chr = String.fromCharCode(event.charCode === undefined ? event.keyCode : event.charCode);
return event.ctrlKey || (chr < ' ' || !dateChars || datetimeChars.indexOf(chr) > -1);
@@ -1474,11 +1517,11 @@
var altFormat = tp_inst._defaults.altFormat || tp_inst._defaults.dateFormat,
date = this._getDate(inst),
formatCfg = $.datepicker._getFormatConfig(inst),
- altFormattedDateTime = '',
- altSeparator = tp_inst._defaults.altSeparator ? tp_inst._defaults.altSeparator : tp_inst._defaults.separator,
+ altFormattedDateTime = '',
+ altSeparator = tp_inst._defaults.altSeparator ? tp_inst._defaults.altSeparator : tp_inst._defaults.separator,
altTimeSuffix = tp_inst._defaults.altTimeSuffix ? tp_inst._defaults.altTimeSuffix : tp_inst._defaults.timeSuffix,
altTimeFormat = tp_inst._defaults.altTimeFormat !== null ? tp_inst._defaults.altTimeFormat : tp_inst._defaults.timeFormat;
-
+
altFormattedDateTime += $.datepicker.formatTime(altTimeFormat, tp_inst, tp_inst._defaults) + altTimeSuffix;
if (!tp_inst._defaults.timeOnly && !tp_inst._defaults.altFieldTimeOnly && date !== null) {
if (tp_inst._defaults.altFormat) {
@@ -1492,7 +1535,7 @@
}
}
else {
- $.datepicker._base_updateAlternate(inst);
+ $.datepicker._base_updateAlternate(inst);
}
};
@@ -1518,18 +1561,23 @@
};
/*
- * override "Today" button to also grab the time.
+ * override "Today" button to also grab the time and set it to input field.
*/
$.datepicker._base_gotoToday = $.datepicker._gotoToday;
$.datepicker._gotoToday = function (id) {
- var inst = this._getInst($(id)[0]),
- $dp = inst.dpDiv;
+ var inst = this._getInst($(id)[0]);
this._base_gotoToday(id);
var tp_inst = this._get(inst, 'timepicker');
- selectLocalTimezone(tp_inst);
+ if (!tp_inst) {
+ return;
+ }
+
+ var tzoffset = $.timepicker.timezoneOffsetNumber(tp_inst.timezone);
var now = new Date();
+ now.setMinutes(now.getMinutes() + now.getTimezoneOffset() + parseInt(tzoffset, 10));
this._setTime(inst, now);
- $('.ui-datepicker-today', $dp).click();
+ this._setDate(inst, now);
+ tp_inst._onSelectHandler();
};
/*
@@ -1581,7 +1629,7 @@
tp_inst.millisec = date ? date.getMilliseconds() : defaults.millisec;
tp_inst.microsec = date ? date.getMicroseconds() : defaults.microsec;
- //check if within min/max times..
+ //check if within min/max times..
tp_inst._limitMinMaxDateTime(inst, true);
tp_inst._onTimeChange();
@@ -1649,9 +1697,9 @@
} else {
tp_date = date;
}
-
- // This is important if you are using the timezone option, javascript's Date
- // object will only return the timezone offset for the current locale, so we
+
+ // This is important if you are using the timezone option, javascript's Date
+ // object will only return the timezone offset for the current locale, so we
// adjust it accordingly. If not using timezone option this won't matter..
// If a timezone is different in tp, keep the timezone as is
if (tp_inst && tp_date) {
@@ -1659,8 +1707,8 @@
if (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {
tp_inst.timezone = tp_date.getTimezoneOffset() * -1;
}
- date = $.timepicker.timezoneAdjust(date, tp_inst.timezone);
- tp_date = $.timepicker.timezoneAdjust(tp_date, tp_inst.timezone);
+ date = $.timepicker.timezoneAdjust(date, $.timepicker.timezoneOffsetString(-date.getTimezoneOffset()), tp_inst.timezone);
+ tp_date = $.timepicker.timezoneAdjust(tp_date, $.timepicker.timezoneOffsetString(-tp_date.getTimezoneOffset()), tp_inst.timezone);
}
this._updateDatepicker(inst);
@@ -1687,19 +1735,39 @@
}
var date = this._getDate(inst);
- if (date && tp_inst._parseTime($(target).val(), tp_inst.timeOnly)) {
+
+ var currDT = null;
+
+ if (tp_inst.$altInput && tp_inst._defaults.altFieldTimeOnly) {
+ currDT = tp_inst.$input.val() + ' ' + tp_inst.$altInput.val();
+ }
+ else if (tp_inst.$input.get(0).tagName !== 'INPUT' && tp_inst.$altInput) {
+ /**
+ * in case the datetimepicker has been applied to a non-input tag for inline UI,
+ * and the user has not configured the plugin to display only time in altInput,
+ * pick current date time from the altInput (and hope for the best, for now, until "ER1" is applied)
+ *
+ * @todo ER1. Since altInput can have a totally difference format, convert it to standard format by reading input format from "altFormat" and "altTimeFormat" option values
+ */
+ currDT = tp_inst.$altInput.val();
+ }
+ else {
+ currDT = tp_inst.$input.val();
+ }
+
+ if (date && tp_inst._parseTime(currDT, !inst.settings.timeOnly)) {
date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);
date.setMicroseconds(tp_inst.microsec);
- // This is important if you are using the timezone option, javascript's Date
- // object will only return the timezone offset for the current locale, so we
+ // This is important if you are using the timezone option, javascript's Date
+ // object will only return the timezone offset for the current locale, so we
// adjust it accordingly. If not using timezone option this won't matter..
if (tp_inst.timezone != null) {
// look out for DST if tz wasn't specified
if (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {
tp_inst.timezone = date.getTimezoneOffset() * -1;
}
- date = $.timepicker.timezoneAdjust(date, tp_inst.timezone);
+ date = $.timepicker.timezoneAdjust(date, tp_inst.timezone, $.timepicker.timezoneOffsetString(-date.getTimezoneOffset()));
}
}
return date;
@@ -1761,7 +1829,10 @@
onselect = null,
overrides = tp_inst._defaults.evnts,
fns = {},
- prop;
+ prop,
+ ret,
+ oldVal,
+ $target;
if (typeof name === 'string') { // if min/max was set with the string
if (name === 'minDate' || name === 'minDateTime') {
min = value;
@@ -1819,13 +1890,24 @@
} else if (onselect) {
tp_inst._defaults.onSelect = onselect;
}
+
+ // Datepicker will override our date when we call _base_optionDatepicker when
+ // calling minDate/maxDate, so we will first grab the value, call
+ // _base_optionDatepicker, then set our value back.
+ if(min || max){
+ $target = $(target);
+ oldVal = $target.datetimepicker('getDate');
+ ret = this._base_optionDatepicker.call($.datepicker, target, name_clone || name, value);
+ $target.datetimepicker('setDate', oldVal);
+ return ret;
+ }
}
if (value === undefined) {
return this._base_optionDatepicker.call($.datepicker, target, name);
}
return this._base_optionDatepicker.call($.datepicker, target, name_clone || name, value);
};
-
+
/*
* jQuery isEmptyObject does not check hasOwnProperty - if someone has added to the object prototype,
* it will return false for all objects
@@ -1983,7 +2065,7 @@
hours = (off - minutes) / 60,
iso = iso8601 ? ':' : '',
tz = (off >= 0 ? '+' : '-') + ('0' + Math.abs(hours)).slice(-2) + iso + ('0' + Math.abs(minutes)).slice(-2);
-
+
if (tz === '+00:00') {
return 'Z';
}
@@ -2003,7 +2085,7 @@
}
if (!/^(\-|\+)\d{4}$/.test(normalized)) { // possibly a user defined tz, so just give it back
- return tzString;
+ return parseInt(tzString, 10);
}
return ((normalized.substr(0, 1) === '-' ? -1 : 1) * // plus or minus
@@ -2014,13 +2096,15 @@
/**
* No way to set timezone in js Date, so we must adjust the minutes to compensate. (think setDate, getDate)
* @param {Date} date
+ * @param {string} fromTimezone formatted like "+0500", "-1245"
* @param {string} toTimezone formatted like "+0500", "-1245"
* @return {Date}
*/
- $.timepicker.timezoneAdjust = function (date, toTimezone) {
+ $.timepicker.timezoneAdjust = function (date, fromTimezone, toTimezone) {
+ var fromTz = $.timepicker.timezoneOffsetNumber(fromTimezone);
var toTz = $.timepicker.timezoneOffsetNumber(toTimezone);
if (!isNaN(toTz)) {
- date.setMinutes(date.getMinutes() + -date.getTimezoneOffset() - toTz);
+ date.setMinutes(date.getMinutes() + (-fromTz) - (-toTz));
}
return date;
};
@@ -2127,6 +2211,7 @@
date.setMilliseconds(date.getMilliseconds() - options.minInterval);
}
}
+
if (date.getTime) {
other[method].call(other, 'option', option, date);
}
@@ -2152,8 +2237,10 @@
}, options, options.end));
checkDates(startTime, endTime);
+
selected(startTime, endTime, 'minDate');
selected(endTime, startTime, 'maxDate');
+
return $([startTime.get(0), endTime.get(0)]);
};
@@ -2162,9 +2249,10 @@
* @param {Object} err pass any type object to log to the console during error or debugging
* @return {void}
*/
- $.timepicker.log = function (err) {
- if (window.console) {
- window.console.log(err);
+ $.timepicker.log = function () {
+ // Older IE (9, maybe 10) throw error on accessing `window.console.log.apply`, so check first.
+ if (window.console && window.console.log && window.console.log.apply) {
+ window.console.log.apply(window.console, Array.prototype.slice.call(arguments));
}
};
@@ -2198,6 +2286,6 @@
/*
* Keep up with the version
*/
- $.timepicker.version = "1.4.5";
+ $.timepicker.version = "1.6.3";
-})(jQuery);
+}));
diff --git a/dist/jquery-ui-timepicker-addon.min.css b/dist/jquery-ui-timepicker-addon.min.css
index a44f3b0..7581fea 100644
--- a/dist/jquery-ui-timepicker-addon.min.css
+++ b/dist/jquery-ui-timepicker-addon.min.css
@@ -1,5 +1,5 @@
-/*! jQuery Timepicker Addon - v1.4.5 - 2014-05-26
+/*! jQuery Timepicker Addon - v1.6.3 - 2016-04-20
* http://trentrichardson.com/examples/timepicker
-* Copyright (c) 2014 Trent Richardson; Licensed MIT */
+* Copyright (c) 2016 Trent Richardson; Licensed MIT */
-.ui-timepicker-div .ui-widget-header{margin-bottom:8px}.ui-timepicker-div dl{text-align:left}.ui-timepicker-div dl dt{float:left;clear:left;padding:0 0 0 5px}.ui-timepicker-div dl dd{margin:0 10px 10px 40%}.ui-timepicker-div td{font-size:90%}.ui-tpicker-grid-label{background:0;border:0;margin:0;padding:0}.ui-timepicker-rtl{direction:rtl}.ui-timepicker-rtl dl{text-align:right;padding:0 5px 0 0}.ui-timepicker-rtl dl dt{float:right;clear:right}.ui-timepicker-rtl dl dd{margin:0 40% 10px 10px}
\ No newline at end of file
+.ui-timepicker-div .ui-widget-header{margin-bottom:8px}.ui-timepicker-div dl{text-align:left}.ui-timepicker-div dl dt{float:left;clear:left;padding:0 0 0 5px}.ui-timepicker-div dl dd{margin:0 10px 10px 40%}.ui-timepicker-div td{font-size:90%}.ui-tpicker-grid-label{background:0 0;border:0;margin:0;padding:0}.ui-timepicker-div .ui_tpicker_unit_hide{display:none}.ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input{background:0 0;color:inherit;border:0;outline:0;border-bottom:solid 1px #555;width:95%}.ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input:focus{border-bottom-color:#aaa}.ui-timepicker-rtl{direction:rtl}.ui-timepicker-rtl dl{text-align:right;padding:0 5px 0 0}.ui-timepicker-rtl dl dt{float:right;clear:right}.ui-timepicker-rtl dl dd{margin:0 40% 10px 10px}.ui-timepicker-div.ui-timepicker-oneLine{padding-right:2px}.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time,.ui-timepicker-div.ui-timepicker-oneLine dt{display:none}.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time_label{display:block;padding-top:2px}.ui-timepicker-div.ui-timepicker-oneLine dl{text-align:right}.ui-timepicker-div.ui-timepicker-oneLine dl dd,.ui-timepicker-div.ui-timepicker-oneLine dl dd>div{display:inline-block;margin:0}.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_minute:before,.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_second:before{content:':';display:inline-block}.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_millisec:before,.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_microsec:before{content:'.';display:inline-block}.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide,.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide:before{display:none}
\ No newline at end of file
diff --git a/dist/jquery-ui-timepicker-addon.min.js b/dist/jquery-ui-timepicker-addon.min.js
index d03eae3..611cbd6 100644
--- a/dist/jquery-ui-timepicker-addon.min.js
+++ b/dist/jquery-ui-timepicker-addon.min.js
@@ -1,5 +1,5 @@
-/*! jQuery Timepicker Addon - v1.4.5 - 2014-05-26
+/*! jQuery Timepicker Addon - v1.6.3 - 2016-04-20
* http://trentrichardson.com/examples/timepicker
-* Copyright (c) 2014 Trent Richardson; Licensed MIT */
-(function($){if($.ui.timepicker=$.ui.timepicker||{},!$.ui.timepicker.version){$.extend($.ui,{timepicker:{version:"1.4.5"}});var Timepicker=function(){this.regional=[],this.regional[""]={currentText:"Now",closeText:"Done",amNames:["AM","A"],pmNames:["PM","P"],timeFormat:"HH:mm",timeSuffix:"",timeOnlyTitle:"Choose Time",timeText:"Time",hourText:"Hour",minuteText:"Minute",secondText:"Second",millisecText:"Millisecond",microsecText:"Microsecond",timezoneText:"Time Zone",isRTL:!1},this._defaults={showButtonPanel:!0,timeOnly:!1,timeOnlyShowDate:!1,showHour:null,showMinute:null,showSecond:null,showMillisec:null,showMicrosec:null,showTimezone:null,showTime:!0,stepHour:1,stepMinute:1,stepSecond:1,stepMillisec:1,stepMicrosec:1,hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null,hourMin:0,minuteMin:0,secondMin:0,millisecMin:0,microsecMin:0,hourMax:23,minuteMax:59,secondMax:59,millisecMax:999,microsecMax:999,minDateTime:null,maxDateTime:null,maxTime:null,minTime:null,onSelect:null,hourGrid:0,minuteGrid:0,secondGrid:0,millisecGrid:0,microsecGrid:0,alwaysSetTime:!0,separator:" ",altFieldTimeOnly:!0,altTimeFormat:null,altSeparator:null,altTimeSuffix:null,altRedirectFocus:!0,pickerTimeFormat:null,pickerTimeSuffix:null,showTimepicker:!0,timezoneList:null,addSliderAccess:!1,sliderAccessArgs:null,controlType:"slider",defaultValue:null,parse:"strict"},$.extend(this._defaults,this.regional[""])};$.extend(Timepicker.prototype,{$input:null,$altInput:null,$timeObj:null,inst:null,hour_slider:null,minute_slider:null,second_slider:null,millisec_slider:null,microsec_slider:null,timezone_select:null,maxTime:null,minTime:null,hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null,hourMinOriginal:null,minuteMinOriginal:null,secondMinOriginal:null,millisecMinOriginal:null,microsecMinOriginal:null,hourMaxOriginal:null,minuteMaxOriginal:null,secondMaxOriginal:null,millisecMaxOriginal:null,microsecMaxOriginal:null,ampm:"",formattedDate:"",formattedTime:"",formattedDateTime:"",timezoneList:null,units:["hour","minute","second","millisec","microsec"],support:{},control:null,setDefaults:function(e){return extendRemove(this._defaults,e||{}),this},_newInst:function($input,opts){var tp_inst=new Timepicker,inlineSettings={},fns={},overrides,i;for(var attrName in this._defaults)if(this._defaults.hasOwnProperty(attrName)){var attrValue=$input.attr("time:"+attrName);if(attrValue)try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}overrides={beforeShow:function(e,t){return $.isFunction(tp_inst._defaults.evnts.beforeShow)?tp_inst._defaults.evnts.beforeShow.call($input[0],e,t,tp_inst):void 0},onChangeMonthYear:function(e,t,i){tp_inst._updateDateTime(i),$.isFunction(tp_inst._defaults.evnts.onChangeMonthYear)&&tp_inst._defaults.evnts.onChangeMonthYear.call($input[0],e,t,i,tp_inst)},onClose:function(e,t){tp_inst.timeDefined===!0&&""!==$input.val()&&tp_inst._updateDateTime(t),$.isFunction(tp_inst._defaults.evnts.onClose)&&tp_inst._defaults.evnts.onClose.call($input[0],e,t,tp_inst)}};for(i in overrides)overrides.hasOwnProperty(i)&&(fns[i]=opts[i]||null);tp_inst._defaults=$.extend({},this._defaults,inlineSettings,opts,overrides,{evnts:fns,timepicker:tp_inst}),tp_inst.amNames=$.map(tp_inst._defaults.amNames,function(e){return e.toUpperCase()}),tp_inst.pmNames=$.map(tp_inst._defaults.pmNames,function(e){return e.toUpperCase()}),tp_inst.support=detectSupport(tp_inst._defaults.timeFormat+(tp_inst._defaults.pickerTimeFormat?tp_inst._defaults.pickerTimeFormat:"")+(tp_inst._defaults.altTimeFormat?tp_inst._defaults.altTimeFormat:"")),"string"==typeof tp_inst._defaults.controlType?("slider"===tp_inst._defaults.controlType&&$.ui.slider===void 0&&(tp_inst._defaults.controlType="select"),tp_inst.control=tp_inst._controls[tp_inst._defaults.controlType]):tp_inst.control=tp_inst._defaults.controlType;var timezoneList=[-720,-660,-600,-570,-540,-480,-420,-360,-300,-270,-240,-210,-180,-120,-60,0,60,120,180,210,240,270,300,330,345,360,390,420,480,525,540,570,600,630,660,690,720,765,780,840];null!==tp_inst._defaults.timezoneList&&(timezoneList=tp_inst._defaults.timezoneList);var tzl=timezoneList.length,tzi=0,tzv=null;if(tzl>0&&"object"!=typeof timezoneList[0])for(;tzl>tzi;tzi++)tzv=timezoneList[tzi],timezoneList[tzi]={value:tzv,label:$.timepicker.timezoneOffsetString(tzv,tp_inst.support.iso8601)};return tp_inst._defaults.timezoneList=timezoneList,tp_inst.timezone=null!==tp_inst._defaults.timezone?$.timepicker.timezoneOffsetNumber(tp_inst._defaults.timezone):-1*(new Date).getTimezoneOffset(),tp_inst.hour=tp_inst._defaults.hourtp_inst._defaults.hourMax?tp_inst._defaults.hourMax:tp_inst._defaults.hour,tp_inst.minute=tp_inst._defaults.minutetp_inst._defaults.minuteMax?tp_inst._defaults.minuteMax:tp_inst._defaults.minute,tp_inst.second=tp_inst._defaults.secondtp_inst._defaults.secondMax?tp_inst._defaults.secondMax:tp_inst._defaults.second,tp_inst.millisec=tp_inst._defaults.millisectp_inst._defaults.millisecMax?tp_inst._defaults.millisecMax:tp_inst._defaults.millisec,tp_inst.microsec=tp_inst._defaults.microsectp_inst._defaults.microsecMax?tp_inst._defaults.microsecMax:tp_inst._defaults.microsec,tp_inst.ampm="",tp_inst.$input=$input,tp_inst._defaults.altField&&(tp_inst.$altInput=$(tp_inst._defaults.altField),tp_inst._defaults.altRedirectFocus===!0&&tp_inst.$altInput.css({cursor:"pointer"}).focus(function(){$input.trigger("focus")})),(0===tp_inst._defaults.minDate||0===tp_inst._defaults.minDateTime)&&(tp_inst._defaults.minDate=new Date),(0===tp_inst._defaults.maxDate||0===tp_inst._defaults.maxDateTime)&&(tp_inst._defaults.maxDate=new Date),void 0!==tp_inst._defaults.minDate&&tp_inst._defaults.minDate instanceof Date&&(tp_inst._defaults.minDateTime=new Date(tp_inst._defaults.minDate.getTime())),void 0!==tp_inst._defaults.minDateTime&&tp_inst._defaults.minDateTime instanceof Date&&(tp_inst._defaults.minDate=new Date(tp_inst._defaults.minDateTime.getTime())),void 0!==tp_inst._defaults.maxDate&&tp_inst._defaults.maxDate instanceof Date&&(tp_inst._defaults.maxDateTime=new Date(tp_inst._defaults.maxDate.getTime())),void 0!==tp_inst._defaults.maxDateTime&&tp_inst._defaults.maxDateTime instanceof Date&&(tp_inst._defaults.maxDate=new Date(tp_inst._defaults.maxDateTime.getTime())),tp_inst.$input.bind("focus",function(){tp_inst._onFocus()}),tp_inst},_addTimePicker:function(e){var t=this.$altInput&&this._defaults.altFieldTimeOnly?this.$input.val()+" "+this.$altInput.val():this.$input.val();this.timeDefined=this._parseTime(t),this._limitMinMaxDateTime(e,!1),this._injectTimePicker()},_parseTime:function(e,t){if(this.inst||(this.inst=$.datepicker._getInst(this.$input[0])),t||!this._defaults.timeOnly){var i=$.datepicker._get(this.inst,"dateFormat");try{var s=parseDateTimeInternal(i,this._defaults.timeFormat,e,$.datepicker._getFormatConfig(this.inst),this._defaults);if(!s.timeObj)return!1;$.extend(this,s.timeObj)}catch(a){return $.timepicker.log("Error parsing the date/time string: "+a+"\ndate/time string = "+e+"\ntimeFormat = "+this._defaults.timeFormat+"\ndateFormat = "+i),!1}return!0}var n=$.datepicker.parseTime(this._defaults.timeFormat,e,this._defaults);return n?($.extend(this,n),!0):!1},_injectTimePicker:function(){var e=this.inst.dpDiv,t=this.inst.settings,i=this,s="",a="",n=null,r={},l={},o=null,c=0,u=0;if(0===e.find("div.ui-timepicker-div").length&&t.showTimepicker){var m=' style="display:none;"',d=''+'"+t.timeText+" "+' ";for(c=0,u=this.units.length;u>c;c++){if(s=this.units[c],a=s.substr(0,1).toUpperCase()+s.substr(1),n=null!==t["show"+a]?t["show"+a]:this.support[s],r[s]=parseInt(t[s+"Max"]-(t[s+"Max"]-t[s+"Min"])%t["step"+a],10),l[s]=0,d+='"+t[s+"Text"]+" "+'
",n&&t[s+"Grid"]>0){if(d+='',"hour"===s)for(var h=t[s+"Min"];r[s]>=h;h+=parseInt(t[s+"Grid"],10)){l[s]++;var p=$.datepicker.formatTime(this.support.ampm?"hht":"HH",{hour:h},t);d+=''+p+" "}else for(var _=t[s+"Min"];r[s]>=_;_+=parseInt(t[s+"Grid"],10))l[s]++,d+=''+(10>_?"0":"")+_+" ";d+="
"}d+=" "}var f=null!==t.showTimezone?t.showTimezone:this.support.timezone;d+='"+t.timezoneText+" ",d+=' ",d+=" ";var g=$(d);for(t.timeOnly===!0&&(g.prepend('"),e.find(".ui-datepicker-header, .ui-datepicker-calendar").hide()),c=0,u=i.units.length;u>c;c++)s=i.units[c],a=s.substr(0,1).toUpperCase()+s.substr(1),n=null!==t["show"+a]?t["show"+a]:this.support[s],i[s+"_slider"]=i.control.create(i,g.find(".ui_tpicker_"+s+"_slider"),s,i[s],t[s+"Min"],r[s],t["step"+a]),n&&t[s+"Grid"]>0&&(o=100*l[s]*t[s+"Grid"]/(r[s]-t[s+"Min"]),g.find(".ui_tpicker_"+s+" table").css({width:o+"%",marginLeft:t.isRTL?"0":o/(-2*l[s])+"%",marginRight:t.isRTL?o/(-2*l[s])+"%":"0",borderCollapse:"collapse"}).find("td").click(function(){var e=$(this),t=e.html(),a=parseInt(t.replace(/[^0-9]/g),10),n=t.replace(/[^apm]/gi),r=e.data("for");"hour"===r&&(-1!==n.indexOf("p")&&12>a?a+=12:-1!==n.indexOf("a")&&12===a&&(a=0)),i.control.value(i,i[r+"_slider"],s,a),i._onTimeChange(),i._onSelectHandler()}).css({cursor:"pointer",width:100/l[s]+"%",textAlign:"center",overflow:"hidden"}));if(this.timezone_select=g.find(".ui_tpicker_timezone").append(" ").find("select"),$.fn.append.apply(this.timezone_select,$.map(t.timezoneList,function(e){return $(" ").val("object"==typeof e?e.value:e).text("object"==typeof e?e.label:e)})),this.timezone!==void 0&&null!==this.timezone&&""!==this.timezone){var M=-1*new Date(this.inst.selectedYear,this.inst.selectedMonth,this.inst.selectedDay,12).getTimezoneOffset();M===this.timezone?selectLocalTimezone(i):this.timezone_select.val(this.timezone)}else this.hour!==void 0&&null!==this.hour&&""!==this.hour?this.timezone_select.val(t.timezone):selectLocalTimezone(i);this.timezone_select.change(function(){i._onTimeChange(),i._onSelectHandler()});var v=e.find(".ui-datepicker-buttonpane");if(v.length?v.before(g):e.append(g),this.$timeObj=g.find(".ui_tpicker_time"),null!==this.inst){var k=this.timeDefined;this._onTimeChange(),this.timeDefined=k}if(this._defaults.addSliderAccess){var T=this._defaults.sliderAccessArgs,D=this._defaults.isRTL;T.isRTL=D,setTimeout(function(){if(0===g.find(".ui-slider-access").length){g.find(".ui-slider:visible").sliderAccess(T);var e=g.find(".ui-slider-access:eq(0)").outerWidth(!0);e&&g.find("table:visible").each(function(){var t=$(this),i=t.outerWidth(),s=(""+t.css(D?"marginRight":"marginLeft")).replace("%",""),a=i-e,n=s*a/i+"%",r={width:a,marginRight:0,marginLeft:0};r[D?"marginRight":"marginLeft"]=n,t.css(r)})}},10)}i._limitMinMaxDateTime(this.inst,!0)}},_limitMinMaxDateTime:function(e,t){var i=this._defaults,s=new Date(e.selectedYear,e.selectedMonth,e.selectedDay);if(this._defaults.showTimepicker){if(null!==$.datepicker._get(e,"minDateTime")&&void 0!==$.datepicker._get(e,"minDateTime")&&s){var a=$.datepicker._get(e,"minDateTime"),n=new Date(a.getFullYear(),a.getMonth(),a.getDate(),0,0,0,0);(null===this.hourMinOriginal||null===this.minuteMinOriginal||null===this.secondMinOriginal||null===this.millisecMinOriginal||null===this.microsecMinOriginal)&&(this.hourMinOriginal=i.hourMin,this.minuteMinOriginal=i.minuteMin,this.secondMinOriginal=i.secondMin,this.millisecMinOriginal=i.millisecMin,this.microsecMinOriginal=i.microsecMin),e.settings.timeOnly||n.getTime()===s.getTime()?(this._defaults.hourMin=a.getHours(),this.hour<=this._defaults.hourMin?(this.hour=this._defaults.hourMin,this._defaults.minuteMin=a.getMinutes(),this.minute<=this._defaults.minuteMin?(this.minute=this._defaults.minuteMin,this._defaults.secondMin=a.getSeconds(),this.second<=this._defaults.secondMin?(this.second=this._defaults.secondMin,this._defaults.millisecMin=a.getMilliseconds(),this.millisec<=this._defaults.millisecMin?(this.millisec=this._defaults.millisecMin,this._defaults.microsecMin=a.getMicroseconds()):(this.microsec=this._defaults.hourMax?(this.hour=this._defaults.hourMax,this._defaults.minuteMax=r.getMinutes(),this.minute>=this._defaults.minuteMax?(this.minute=this._defaults.minuteMax,this._defaults.secondMax=r.getSeconds(),this.second>=this._defaults.secondMax?(this.second=this._defaults.secondMax,this._defaults.millisecMax=r.getMilliseconds(),this.millisec>=this._defaults.millisecMax?(this.millisec=this._defaults.millisecMax,this._defaults.microsecMax=r.getMicroseconds()):(this.microsec>this._defaults.microsecMax&&(this.microsec=this._defaults.microsecMax),this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.minuteMax=this.minuteMaxOriginal,this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.hourMax=this.hourMaxOriginal,this._defaults.minuteMax=this.minuteMaxOriginal,this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)}if(null!==e.settings.minTime){var o=new Date("01/01/1970 "+e.settings.minTime);this.hourc.getHours()?(this.hour=this._defaults.hourMax=c.getHours(),this.minute=this._defaults.minuteMax=c.getMinutes()):this.hour===c.getHours()&&this.minute>c.getMinutes()?this.minute=this._defaults.minuteMax=c.getMinutes():this._defaults.hourMax>c.getHours()?(this._defaults.hourMax=c.getHours(),this._defaults.minuteMax=c.getMinutes()):this._defaults.minuteMax=this._defaults.hourMax===c.getHours()===this.hour&&this._defaults.minuteMax>c.getMinutes()?c.getMinutes():59}if(void 0!==t&&t===!0){var u=parseInt(this._defaults.hourMax-(this._defaults.hourMax-this._defaults.hourMin)%this._defaults.stepHour,10),m=parseInt(this._defaults.minuteMax-(this._defaults.minuteMax-this._defaults.minuteMin)%this._defaults.stepMinute,10),d=parseInt(this._defaults.secondMax-(this._defaults.secondMax-this._defaults.secondMin)%this._defaults.stepSecond,10),h=parseInt(this._defaults.millisecMax-(this._defaults.millisecMax-this._defaults.millisecMin)%this._defaults.stepMillisec,10),p=parseInt(this._defaults.microsecMax-(this._defaults.microsecMax-this._defaults.microsecMin)%this._defaults.stepMicrosec,10);this.hour_slider&&(this.control.options(this,this.hour_slider,"hour",{min:this._defaults.hourMin,max:u,step:this._defaults.stepHour}),this.control.value(this,this.hour_slider,"hour",this.hour-this.hour%this._defaults.stepHour)),this.minute_slider&&(this.control.options(this,this.minute_slider,"minute",{min:this._defaults.minuteMin,max:m,step:this._defaults.stepMinute}),this.control.value(this,this.minute_slider,"minute",this.minute-this.minute%this._defaults.stepMinute)),this.second_slider&&(this.control.options(this,this.second_slider,"second",{min:this._defaults.secondMin,max:d,step:this._defaults.stepSecond}),this.control.value(this,this.second_slider,"second",this.second-this.second%this._defaults.stepSecond)),this.millisec_slider&&(this.control.options(this,this.millisec_slider,"millisec",{min:this._defaults.millisecMin,max:h,step:this._defaults.stepMillisec}),this.control.value(this,this.millisec_slider,"millisec",this.millisec-this.millisec%this._defaults.stepMillisec)),this.microsec_slider&&(this.control.options(this,this.microsec_slider,"microsec",{min:this._defaults.microsecMin,max:p,step:this._defaults.stepMicrosec}),this.control.value(this,this.microsec_slider,"microsec",this.microsec-this.microsec%this._defaults.stepMicrosec))}}},_onTimeChange:function(){if(this._defaults.showTimepicker){var e=this.hour_slider?this.control.value(this,this.hour_slider,"hour"):!1,t=this.minute_slider?this.control.value(this,this.minute_slider,"minute"):!1,i=this.second_slider?this.control.value(this,this.second_slider,"second"):!1,s=this.millisec_slider?this.control.value(this,this.millisec_slider,"millisec"):!1,a=this.microsec_slider?this.control.value(this,this.microsec_slider,"microsec"):!1,n=this.timezone_select?this.timezone_select.val():!1,r=this._defaults,l=r.pickerTimeFormat||r.timeFormat,o=r.pickerTimeSuffix||r.timeSuffix;"object"==typeof e&&(e=!1),"object"==typeof t&&(t=!1),"object"==typeof i&&(i=!1),"object"==typeof s&&(s=!1),"object"==typeof a&&(a=!1),"object"==typeof n&&(n=!1),e!==!1&&(e=parseInt(e,10)),t!==!1&&(t=parseInt(t,10)),i!==!1&&(i=parseInt(i,10)),s!==!1&&(s=parseInt(s,10)),a!==!1&&(a=parseInt(a,10)),n!==!1&&(n=""+n);var c=r[12>e?"amNames":"pmNames"][0],u=e!==parseInt(this.hour,10)||t!==parseInt(this.minute,10)||i!==parseInt(this.second,10)||s!==parseInt(this.millisec,10)||a!==parseInt(this.microsec,10)||this.ampm.length>0&&12>e!=(-1!==$.inArray(this.ampm.toUpperCase(),this.amNames))||null!==this.timezone&&n!==""+this.timezone;u&&(e!==!1&&(this.hour=e),t!==!1&&(this.minute=t),i!==!1&&(this.second=i),s!==!1&&(this.millisec=s),a!==!1&&(this.microsec=a),n!==!1&&(this.timezone=n),this.inst||(this.inst=$.datepicker._getInst(this.$input[0])),this._limitMinMaxDateTime(this.inst,!0)),this.support.ampm&&(this.ampm=c),this.formattedTime=$.datepicker.formatTime(r.timeFormat,this,r),this.$timeObj&&(l===r.timeFormat?this.$timeObj.text(this.formattedTime+o):this.$timeObj.text($.datepicker.formatTime(l,this,r)+o)),this.timeDefined=!0,u&&this._updateDateTime()}},_onSelectHandler:function(){var e=this._defaults.onSelect||this.inst.settings.onSelect,t=this.$input?this.$input[0]:null;e&&t&&e.apply(t,[this.formattedDateTime,this])},_updateDateTime:function(e){e=this.inst||e;var t=e.currentYear>0?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(e.selectedYear,e.selectedMonth,e.selectedDay),i=$.datepicker._daylightSavingAdjust(t),s=$.datepicker._get(e,"dateFormat"),a=$.datepicker._getFormatConfig(e),n=null!==i&&this.timeDefined;this.formattedDate=$.datepicker.formatDate(s,null===i?new Date:i,a);var r=this.formattedDate;if(""===e.lastVal&&(e.currentYear=e.selectedYear,e.currentMonth=e.selectedMonth,e.currentDay=e.selectedDay),this._defaults.timeOnly===!0&&this._defaults.timeOnlyShowDate===!1?r=this.formattedTime:(this._defaults.timeOnly!==!0&&(this._defaults.alwaysSetTime||n)||this._defaults.timeOnly===!0&&this._defaults.timeOnlyShowDate===!0)&&(r+=this._defaults.separator+this.formattedTime+this._defaults.timeSuffix),this.formattedDateTime=r,this._defaults.showTimepicker)if(this.$altInput&&this._defaults.timeOnly===!1&&this._defaults.altFieldTimeOnly===!0)this.$altInput.val(this.formattedTime),this.$input.val(this.formattedDate);else if(this.$altInput){this.$input.val(r);var l="",o=null!==this._defaults.altSeparator?this._defaults.altSeparator:this._defaults.separator,c=null!==this._defaults.altTimeSuffix?this._defaults.altTimeSuffix:this._defaults.timeSuffix;this._defaults.timeOnly||(l=this._defaults.altFormat?$.datepicker.formatDate(this._defaults.altFormat,null===i?new Date:i,a):this.formattedDate,l&&(l+=o)),l+=null!==this._defaults.altTimeFormat?$.datepicker.formatTime(this._defaults.altTimeFormat,this,this._defaults)+c:this.formattedTime+c,this.$altInput.val(l)}else this.$input.val(r);else this.$input.val(this.formattedDate);this.$input.trigger("change")},_onFocus:function(){if(!this.$input.val()&&this._defaults.defaultValue){this.$input.val(this._defaults.defaultValue);var e=$.datepicker._getInst(this.$input.get(0)),t=$.datepicker._get(e,"timepicker");if(t&&t._defaults.timeOnly&&e.input.val()!==e.lastVal)try{$.datepicker._updateDatepicker(e)}catch(i){$.timepicker.log(i)}}},_controls:{slider:{create:function(e,t,i,s,a,n,r){var l=e._defaults.isRTL;return t.prop("slide",null).slider({orientation:"horizontal",value:l?-1*s:s,min:l?-1*n:a,max:l?-1*a:n,step:r,slide:function(t,s){e.control.value(e,$(this),i,l?-1*s.value:s.value),e._onTimeChange()},stop:function(){e._onSelectHandler()}})},options:function(e,t,i,s,a){if(e._defaults.isRTL){if("string"==typeof s)return"min"===s||"max"===s?void 0!==a?t.slider(s,-1*a):Math.abs(t.slider(s)):t.slider(s);var n=s.min,r=s.max;return s.min=s.max=null,void 0!==n&&(s.max=-1*n),void 0!==r&&(s.min=-1*r),t.slider(s)}return"string"==typeof s&&void 0!==a?t.slider(s,a):t.slider(s)},value:function(e,t,i,s){return e._defaults.isRTL?void 0!==s?t.slider("value",-1*s):Math.abs(t.slider("value")):void 0!==s?t.slider("value",s):t.slider("value")}},select:{create:function(e,t,i,s,a,n,r){for(var l='',o=e._defaults.pickerTimeFormat||e._defaults.timeFormat,c=a;n>=c;c+=r)l+='",l+="hour"===i?$.datepicker.formatTime($.trim(o.replace(/[^ht ]/gi,"")),{hour:c},e._defaults):"millisec"===i||"microsec"===i||c>=10?c:"0"+(""+c),l+=" ";return l+=" ",t.children("select").remove(),$(l).appendTo(t).change(function(){e._onTimeChange(),e._onSelectHandler()}),t},options:function(e,t,i,s,a){var n={},r=t.children("select");if("string"==typeof s){if(void 0===a)return r.data(s);n[s]=a}else n=s;return e.control.create(e,t,r.data("unit"),r.val(),n.min||r.data("min"),n.max||r.data("max"),n.step||r.data("step"))},value:function(e,t,i,s){var a=t.children("select");return void 0!==s?a.val(s):a.val()}}}}),$.fn.extend({timepicker:function(e){e=e||{};var t=Array.prototype.slice.call(arguments);return"object"==typeof e&&(t[0]=$.extend(e,{timeOnly:!0})),$(this).each(function(){$.fn.datetimepicker.apply($(this),t)})},datetimepicker:function(e){e=e||{};var t=arguments;return"string"==typeof e?"getDate"===e||"option"===e&&2===t.length&&"string"==typeof t[1]?$.fn.datepicker.apply($(this[0]),t):this.each(function(){var e=$(this);e.datepicker.apply(e,t)}):this.each(function(){var t=$(this);t.datepicker($.timepicker._newInst(t,e)._defaults)})}}),$.datepicker.parseDateTime=function(e,t,i,s,a){var n=parseDateTimeInternal(e,t,i,s,a);if(n.timeObj){var r=n.timeObj;n.date.setHours(r.hour,r.minute,r.second,r.millisec),n.date.setMicroseconds(r.microsec)}return n.date},$.datepicker.parseTime=function(e,t,i){var s=extendRemove(extendRemove({},$.timepicker._defaults),i||{});-1!==e.replace(/\'.*?\'/g,"").indexOf("Z");var a=function(e,t,i){var s,a=function(e,t){var i=[];return e&&$.merge(i,e),t&&$.merge(i,t),i=$.map(i,function(e){return e.replace(/[.*+?|()\[\]{}\\]/g,"\\$&")}),"("+i.join("|")+")?"},n=function(e){var t=e.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|c{1}|t{1,2}|z|'.*?')/g),i={h:-1,m:-1,s:-1,l:-1,c:-1,t:-1,z:-1};if(t)for(var s=0;t.length>s;s++)-1===i[(""+t[s]).charAt(0)]&&(i[(""+t[s]).charAt(0)]=s+1);return i},r="^"+(""+e).replace(/([hH]{1,2}|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g,function(e){var t=e.length;switch(e.charAt(0).toLowerCase()){case"h":return 1===t?"(\\d?\\d)":"(\\d{"+t+"})";case"m":return 1===t?"(\\d?\\d)":"(\\d{"+t+"})";case"s":return 1===t?"(\\d?\\d)":"(\\d{"+t+"})";case"l":return"(\\d?\\d?\\d)";case"c":return"(\\d?\\d?\\d)";case"z":return"(z|[-+]\\d\\d:?\\d\\d|\\S+)?";case"t":return a(i.amNames,i.pmNames);default:return"("+e.replace(/\'/g,"").replace(/(\.|\$|\^|\\|\/|\(|\)|\[|\]|\?|\+|\*)/g,function(e){return"\\"+e})+")?"}}).replace(/\s/g,"\\s?")+i.timeSuffix+"$",l=n(e),o="";s=t.match(RegExp(r,"i"));var c={hour:0,minute:0,second:0,millisec:0,microsec:0};return s?(-1!==l.t&&(void 0===s[l.t]||0===s[l.t].length?(o="",c.ampm=""):(o=-1!==$.inArray(s[l.t].toUpperCase(),i.amNames)?"AM":"PM",c.ampm=i["AM"===o?"amNames":"pmNames"][0])),-1!==l.h&&(c.hour="AM"===o&&"12"===s[l.h]?0:"PM"===o&&"12"!==s[l.h]?parseInt(s[l.h],10)+12:Number(s[l.h])),-1!==l.m&&(c.minute=Number(s[l.m])),-1!==l.s&&(c.second=Number(s[l.s])),-1!==l.l&&(c.millisec=Number(s[l.l])),-1!==l.c&&(c.microsec=Number(s[l.c])),-1!==l.z&&void 0!==s[l.z]&&(c.timezone=$.timepicker.timezoneOffsetNumber(s[l.z])),c):!1},n=function(e,t,i){try{var s=new Date("2012-01-01 "+t);if(isNaN(s.getTime())&&(s=new Date("2012-01-01T"+t),isNaN(s.getTime())&&(s=new Date("01/01/2012 "+t),isNaN(s.getTime()))))throw"Unable to parse time with native Date: "+t;return{hour:s.getHours(),minute:s.getMinutes(),second:s.getSeconds(),millisec:s.getMilliseconds(),microsec:s.getMicroseconds(),timezone:-1*s.getTimezoneOffset()}}catch(n){try{return a(e,t,i)}catch(r){$.timepicker.log("Unable to parse \ntimeString: "+t+"\ntimeFormat: "+e)}}return!1};return"function"==typeof s.parse?s.parse(e,t,s):"loose"===s.parse?n(e,t,s):a(e,t,s)},$.datepicker.formatTime=function(e,t,i){i=i||{},i=$.extend({},$.timepicker._defaults,i),t=$.extend({hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null},t);var s=e,a=i.amNames[0],n=parseInt(t.hour,10);return n>11&&(a=i.pmNames[0]),s=s.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g,function(e){switch(e){case"HH":return("0"+n).slice(-2);case"H":return n;case"hh":return("0"+convert24to12(n)).slice(-2);case"h":return convert24to12(n);case"mm":return("0"+t.minute).slice(-2);case"m":return t.minute;case"ss":return("0"+t.second).slice(-2);case"s":return t.second;case"l":return("00"+t.millisec).slice(-3);case"c":return("00"+t.microsec).slice(-3);case"z":return $.timepicker.timezoneOffsetString(null===t.timezone?i.timezone:t.timezone,!1);case"Z":return $.timepicker.timezoneOffsetString(null===t.timezone?i.timezone:t.timezone,!0);case"T":return a.charAt(0).toUpperCase();case"TT":return a.toUpperCase();case"t":return a.charAt(0).toLowerCase();case"tt":return a.toLowerCase();default:return e.replace(/'/g,"")}})},$.datepicker._base_selectDate=$.datepicker._selectDate,$.datepicker._selectDate=function(e,t){var i=this._getInst($(e)[0]),s=this._get(i,"timepicker");s&&i.settings.showTimepicker?(s._limitMinMaxDateTime(i,!0),i.inline=i.stay_open=!0,this._base_selectDate(e,t),i.inline=i.stay_open=!1,this._notifyChange(i),this._updateDatepicker(i)):this._base_selectDate(e,t)},$.datepicker._base_updateDatepicker=$.datepicker._updateDatepicker,$.datepicker._updateDatepicker=function(e){var t=e.input[0];if(!($.datepicker._curInst&&$.datepicker._curInst!==e&&$.datepicker._datepickerShowing&&$.datepicker._lastInput!==t||"boolean"==typeof e.stay_open&&e.stay_open!==!1)){this._base_updateDatepicker(e);var i=this._get(e,"timepicker");i&&i._addTimePicker(e)}},$.datepicker._base_doKeyPress=$.datepicker._doKeyPress,$.datepicker._doKeyPress=function(e){var t=$.datepicker._getInst(e.target),i=$.datepicker._get(t,"timepicker");if(i&&$.datepicker._get(t,"constrainInput")){var s=i.support.ampm,a=null!==i._defaults.showTimezone?i._defaults.showTimezone:i.support.timezone,n=$.datepicker._possibleChars($.datepicker._get(t,"dateFormat")),r=(""+i._defaults.timeFormat).replace(/[hms]/g,"").replace(/TT/g,s?"APM":"").replace(/Tt/g,s?"AaPpMm":"").replace(/tT/g,s?"AaPpMm":"").replace(/T/g,s?"AP":"").replace(/tt/g,s?"apm":"").replace(/t/g,s?"ap":"")+" "+i._defaults.separator+i._defaults.timeSuffix+(a?i._defaults.timezoneList.join(""):"")+i._defaults.amNames.join("")+i._defaults.pmNames.join("")+n,l=String.fromCharCode(void 0===e.charCode?e.keyCode:e.charCode);return e.ctrlKey||" ">l||!n||r.indexOf(l)>-1}return $.datepicker._base_doKeyPress(e)},$.datepicker._base_updateAlternate=$.datepicker._updateAlternate,$.datepicker._updateAlternate=function(e){var t=this._get(e,"timepicker");if(t){var i=t._defaults.altField;if(i){var s=(t._defaults.altFormat||t._defaults.dateFormat,this._getDate(e)),a=$.datepicker._getFormatConfig(e),n="",r=t._defaults.altSeparator?t._defaults.altSeparator:t._defaults.separator,l=t._defaults.altTimeSuffix?t._defaults.altTimeSuffix:t._defaults.timeSuffix,o=null!==t._defaults.altTimeFormat?t._defaults.altTimeFormat:t._defaults.timeFormat;n+=$.datepicker.formatTime(o,t,t._defaults)+l,t._defaults.timeOnly||t._defaults.altFieldTimeOnly||null===s||(n=t._defaults.altFormat?$.datepicker.formatDate(t._defaults.altFormat,s,a)+r+n:t.formattedDate+r+n),$(i).val(e.input.val()?n:"")}}else $.datepicker._base_updateAlternate(e)},$.datepicker._base_doKeyUp=$.datepicker._doKeyUp,$.datepicker._doKeyUp=function(e){var t=$.datepicker._getInst(e.target),i=$.datepicker._get(t,"timepicker");if(i&&i._defaults.timeOnly&&t.input.val()!==t.lastVal)try{$.datepicker._updateDatepicker(t)}catch(s){$.timepicker.log(s)}return $.datepicker._base_doKeyUp(e)},$.datepicker._base_gotoToday=$.datepicker._gotoToday,$.datepicker._gotoToday=function(e){var t=this._getInst($(e)[0]),i=t.dpDiv;this._base_gotoToday(e);var s=this._get(t,"timepicker");selectLocalTimezone(s);var a=new Date;this._setTime(t,a),$(".ui-datepicker-today",i).click()},$.datepicker._disableTimepickerDatepicker=function(e){var t=this._getInst(e);if(t){var i=this._get(t,"timepicker");$(e).datepicker("getDate"),i&&(t.settings.showTimepicker=!1,i._defaults.showTimepicker=!1,i._updateDateTime(t))}},$.datepicker._enableTimepickerDatepicker=function(e){var t=this._getInst(e);if(t){var i=this._get(t,"timepicker");$(e).datepicker("getDate"),i&&(t.settings.showTimepicker=!0,i._defaults.showTimepicker=!0,i._addTimePicker(t),i._updateDateTime(t))}},$.datepicker._setTime=function(e,t){var i=this._get(e,"timepicker");if(i){var s=i._defaults;i.hour=t?t.getHours():s.hour,i.minute=t?t.getMinutes():s.minute,i.second=t?t.getSeconds():s.second,i.millisec=t?t.getMilliseconds():s.millisec,i.microsec=t?t.getMicroseconds():s.microsec,i._limitMinMaxDateTime(e,!0),i._onTimeChange(),i._updateDateTime(e)
-}},$.datepicker._setTimeDatepicker=function(e,t,i){var s=this._getInst(e);if(s){var a=this._get(s,"timepicker");if(a){this._setDateFromField(s);var n;t&&("string"==typeof t?(a._parseTime(t,i),n=new Date,n.setHours(a.hour,a.minute,a.second,a.millisec),n.setMicroseconds(a.microsec)):(n=new Date(t.getTime()),n.setMicroseconds(t.getMicroseconds())),"Invalid Date"==""+n&&(n=void 0),this._setTime(s,n))}}},$.datepicker._base_setDateDatepicker=$.datepicker._setDateDatepicker,$.datepicker._setDateDatepicker=function(e,t){var i=this._getInst(e),s=t;if(i){"string"==typeof t&&(s=new Date(t),s.getTime()||(this._base_setDateDatepicker.apply(this,arguments),s=$(e).datepicker("getDate")));var a,n=this._get(i,"timepicker");s instanceof Date?(a=new Date(s.getTime()),a.setMicroseconds(s.getMicroseconds())):a=s,n&&a&&(n.support.timezone||null!==n._defaults.timezone||(n.timezone=-1*a.getTimezoneOffset()),s=$.timepicker.timezoneAdjust(s,n.timezone),a=$.timepicker.timezoneAdjust(a,n.timezone)),this._updateDatepicker(i),this._base_setDateDatepicker.apply(this,arguments),this._setTimeDatepicker(e,a,!0)}},$.datepicker._base_getDateDatepicker=$.datepicker._getDateDatepicker,$.datepicker._getDateDatepicker=function(e,t){var i=this._getInst(e);if(i){var s=this._get(i,"timepicker");if(s){void 0===i.lastVal&&this._setDateFromField(i,t);var a=this._getDate(i);return a&&s._parseTime($(e).val(),s.timeOnly)&&(a.setHours(s.hour,s.minute,s.second,s.millisec),a.setMicroseconds(s.microsec),null!=s.timezone&&(s.support.timezone||null!==s._defaults.timezone||(s.timezone=-1*a.getTimezoneOffset()),a=$.timepicker.timezoneAdjust(a,s.timezone))),a}return this._base_getDateDatepicker(e,t)}},$.datepicker._base_parseDate=$.datepicker.parseDate,$.datepicker.parseDate=function(e,t,i){var s;try{s=this._base_parseDate(e,t,i)}catch(a){if(!(a.indexOf(":")>=0))throw a;s=this._base_parseDate(e,t.substring(0,t.length-(a.length-a.indexOf(":")-2)),i),$.timepicker.log("Error parsing the date string: "+a+"\ndate string = "+t+"\ndate format = "+e)}return s},$.datepicker._base_formatDate=$.datepicker._formatDate,$.datepicker._formatDate=function(e){var t=this._get(e,"timepicker");return t?(t._updateDateTime(e),t.$input.val()):this._base_formatDate(e)},$.datepicker._base_optionDatepicker=$.datepicker._optionDatepicker,$.datepicker._optionDatepicker=function(e,t,i){var s,a=this._getInst(e);if(!a)return null;var n=this._get(a,"timepicker");if(n){var r,l=null,o=null,c=null,u=n._defaults.evnts,m={};if("string"==typeof t){if("minDate"===t||"minDateTime"===t)l=i;else if("maxDate"===t||"maxDateTime"===t)o=i;else if("onSelect"===t)c=i;else if(u.hasOwnProperty(t)){if(i===void 0)return u[t];m[t]=i,s={}}}else if("object"==typeof t){t.minDate?l=t.minDate:t.minDateTime?l=t.minDateTime:t.maxDate?o=t.maxDate:t.maxDateTime&&(o=t.maxDateTime);for(r in u)u.hasOwnProperty(r)&&t[r]&&(m[r]=t[r])}for(r in m)m.hasOwnProperty(r)&&(u[r]=m[r],s||(s=$.extend({},t)),delete s[r]);if(s&&isEmptyObject(s))return;l?(l=0===l?new Date:new Date(l),n._defaults.minDate=l,n._defaults.minDateTime=l):o?(o=0===o?new Date:new Date(o),n._defaults.maxDate=o,n._defaults.maxDateTime=o):c&&(n._defaults.onSelect=c)}return void 0===i?this._base_optionDatepicker.call($.datepicker,e,t):this._base_optionDatepicker.call($.datepicker,e,s||t,i)};var isEmptyObject=function(e){var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0},extendRemove=function(e,t){$.extend(e,t);for(var i in t)(null===t[i]||void 0===t[i])&&(e[i]=t[i]);return e},detectSupport=function(e){var t=e.replace(/'.*?'/g,"").toLowerCase(),i=function(e,t){return-1!==e.indexOf(t)?!0:!1};return{hour:i(t,"h"),minute:i(t,"m"),second:i(t,"s"),millisec:i(t,"l"),microsec:i(t,"c"),timezone:i(t,"z"),ampm:i(t,"t")&&i(e,"h"),iso8601:i(e,"Z")}},convert24to12=function(e){return e%=12,0===e&&(e=12),e+""},computeEffectiveSetting=function(e,t){return e&&e[t]?e[t]:$.timepicker._defaults[t]},splitDateTime=function(e,t){var i=computeEffectiveSetting(t,"separator"),s=computeEffectiveSetting(t,"timeFormat"),a=s.split(i),n=a.length,r=e.split(i),l=r.length;return l>1?{dateString:r.splice(0,l-n).join(i),timeString:r.splice(0,n).join(i)}:{dateString:e,timeString:""}},parseDateTimeInternal=function(e,t,i,s,a){var n,r,l;if(r=splitDateTime(i,a),n=$.datepicker._base_parseDate(e,r.dateString,s),""===r.timeString)return{date:n};if(l=$.datepicker.parseTime(t,r.timeString,a),!l)throw"Wrong time format";return{date:n,timeObj:l}},selectLocalTimezone=function(e,t){if(e&&e.timezone_select){var i=t||new Date;e.timezone_select.val(-i.getTimezoneOffset())}};$.timepicker=new Timepicker,$.timepicker.timezoneOffsetString=function(e,t){if(isNaN(e)||e>840||-720>e)return e;var i=e,s=i%60,a=(i-s)/60,n=t?":":"",r=(i>=0?"+":"-")+("0"+Math.abs(a)).slice(-2)+n+("0"+Math.abs(s)).slice(-2);return"+00:00"===r?"Z":r},$.timepicker.timezoneOffsetNumber=function(e){var t=(""+e).replace(":","");return"Z"===t.toUpperCase()?0:/^(\-|\+)\d{4}$/.test(t)?("-"===t.substr(0,1)?-1:1)*(60*parseInt(t.substr(1,2),10)+parseInt(t.substr(3,2),10)):e},$.timepicker.timezoneAdjust=function(e,t){var i=$.timepicker.timezoneOffsetNumber(t);return isNaN(i)||e.setMinutes(e.getMinutes()+-e.getTimezoneOffset()-i),e},$.timepicker.timeRange=function(e,t,i){return $.timepicker.handleRange("timepicker",e,t,i)},$.timepicker.datetimeRange=function(e,t,i){$.timepicker.handleRange("datetimepicker",e,t,i)},$.timepicker.dateRange=function(e,t,i){$.timepicker.handleRange("datepicker",e,t,i)},$.timepicker.handleRange=function(e,t,i,s){function a(a,n){var r=t[e]("getDate"),l=i[e]("getDate"),o=a[e]("getDate");if(null!==r){var c=new Date(r.getTime()),u=new Date(r.getTime());c.setMilliseconds(c.getMilliseconds()+s.minInterval),u.setMilliseconds(u.getMilliseconds()+s.maxInterval),s.minInterval>0&&c>l?i[e]("setDate",c):s.maxInterval>0&&l>u?i[e]("setDate",u):r>l&&n[e]("setDate",o)}}function n(t,i,a){if(t.val()){var n=t[e].call(t,"getDate");null!==n&&s.minInterval>0&&("minDate"===a&&n.setMilliseconds(n.getMilliseconds()+s.minInterval),"maxDate"===a&&n.setMilliseconds(n.getMilliseconds()-s.minInterval)),n.getTime&&i[e].call(i,"option",a,n)}}s=$.extend({},{minInterval:0,maxInterval:0,start:{},end:{}},s);var r=!1;return"timepicker"===e&&(r=!0,e="datetimepicker"),$.fn[e].call(t,$.extend({timeOnly:r,onClose:function(){a($(this),i)},onSelect:function(){n($(this),i,"minDate")}},s,s.start)),$.fn[e].call(i,$.extend({timeOnly:r,onClose:function(){a($(this),t)},onSelect:function(){n($(this),t,"maxDate")}},s,s.end)),a(t,i),n(t,i,"minDate"),n(i,t,"maxDate"),$([t.get(0),i.get(0)])},$.timepicker.log=function(e){window.console&&window.console.log(e)},$.timepicker._util={_extendRemove:extendRemove,_isEmptyObject:isEmptyObject,_convert24to12:convert24to12,_detectSupport:detectSupport,_selectLocalTimezone:selectLocalTimezone,_computeEffectiveSetting:computeEffectiveSetting,_splitDateTime:splitDateTime,_parseDateTimeInternal:parseDateTimeInternal},Date.prototype.getMicroseconds||(Date.prototype.microseconds=0,Date.prototype.getMicroseconds=function(){return this.microseconds},Date.prototype.setMicroseconds=function(e){return this.setMilliseconds(this.getMilliseconds()+Math.floor(e/1e3)),this.microseconds=e%1e3,this}),$.timepicker.version="1.4.5"}})(jQuery);
\ No newline at end of file
+* Copyright (c) 2016 Trent Richardson; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","jquery-ui"],a):a(jQuery)}(function($){if($.ui.timepicker=$.ui.timepicker||{},!$.ui.timepicker.version){$.extend($.ui,{timepicker:{version:"1.6.3"}});var Timepicker=function(){this.regional=[],this.regional[""]={currentText:"Now",closeText:"Done",amNames:["AM","A"],pmNames:["PM","P"],timeFormat:"HH:mm",timeSuffix:"",timeOnlyTitle:"Choose Time",timeText:"Time",hourText:"Hour",minuteText:"Minute",secondText:"Second",millisecText:"Millisecond",microsecText:"Microsecond",timezoneText:"Time Zone",isRTL:!1},this._defaults={showButtonPanel:!0,timeOnly:!1,timeOnlyShowDate:!1,showHour:null,showMinute:null,showSecond:null,showMillisec:null,showMicrosec:null,showTimezone:null,showTime:!0,stepHour:1,stepMinute:1,stepSecond:1,stepMillisec:1,stepMicrosec:1,hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null,hourMin:0,minuteMin:0,secondMin:0,millisecMin:0,microsecMin:0,hourMax:23,minuteMax:59,secondMax:59,millisecMax:999,microsecMax:999,minDateTime:null,maxDateTime:null,maxTime:null,minTime:null,onSelect:null,hourGrid:0,minuteGrid:0,secondGrid:0,millisecGrid:0,microsecGrid:0,alwaysSetTime:!0,separator:" ",altFieldTimeOnly:!0,altTimeFormat:null,altSeparator:null,altTimeSuffix:null,altRedirectFocus:!0,pickerTimeFormat:null,pickerTimeSuffix:null,showTimepicker:!0,timezoneList:null,addSliderAccess:!1,sliderAccessArgs:null,controlType:"slider",oneLine:!1,defaultValue:null,parse:"strict",afterInject:null},$.extend(this._defaults,this.regional[""])};$.extend(Timepicker.prototype,{$input:null,$altInput:null,$timeObj:null,inst:null,hour_slider:null,minute_slider:null,second_slider:null,millisec_slider:null,microsec_slider:null,timezone_select:null,maxTime:null,minTime:null,hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null,hourMinOriginal:null,minuteMinOriginal:null,secondMinOriginal:null,millisecMinOriginal:null,microsecMinOriginal:null,hourMaxOriginal:null,minuteMaxOriginal:null,secondMaxOriginal:null,millisecMaxOriginal:null,microsecMaxOriginal:null,ampm:"",formattedDate:"",formattedTime:"",formattedDateTime:"",timezoneList:null,units:["hour","minute","second","millisec","microsec"],support:{},control:null,setDefaults:function(a){return extendRemove(this._defaults,a||{}),this},_newInst:function($input,opts){var tp_inst=new Timepicker,inlineSettings={},fns={},overrides,i;for(var attrName in this._defaults)if(this._defaults.hasOwnProperty(attrName)){var attrValue=$input.attr("time:"+attrName);if(attrValue)try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}overrides={beforeShow:function(a,b){return $.isFunction(tp_inst._defaults.evnts.beforeShow)?tp_inst._defaults.evnts.beforeShow.call($input[0],a,b,tp_inst):void 0},onChangeMonthYear:function(a,b,c){$.isFunction(tp_inst._defaults.evnts.onChangeMonthYear)&&tp_inst._defaults.evnts.onChangeMonthYear.call($input[0],a,b,c,tp_inst)},onClose:function(a,b){tp_inst.timeDefined===!0&&""!==$input.val()&&tp_inst._updateDateTime(b),$.isFunction(tp_inst._defaults.evnts.onClose)&&tp_inst._defaults.evnts.onClose.call($input[0],a,b,tp_inst)}};for(i in overrides)overrides.hasOwnProperty(i)&&(fns[i]=opts[i]||this._defaults[i]||null);tp_inst._defaults=$.extend({},this._defaults,inlineSettings,opts,overrides,{evnts:fns,timepicker:tp_inst}),tp_inst.amNames=$.map(tp_inst._defaults.amNames,function(a){return a.toUpperCase()}),tp_inst.pmNames=$.map(tp_inst._defaults.pmNames,function(a){return a.toUpperCase()}),tp_inst.support=detectSupport(tp_inst._defaults.timeFormat+(tp_inst._defaults.pickerTimeFormat?tp_inst._defaults.pickerTimeFormat:"")+(tp_inst._defaults.altTimeFormat?tp_inst._defaults.altTimeFormat:"")),"string"==typeof tp_inst._defaults.controlType?("slider"===tp_inst._defaults.controlType&&"undefined"==typeof $.ui.slider&&(tp_inst._defaults.controlType="select"),tp_inst.control=tp_inst._controls[tp_inst._defaults.controlType]):tp_inst.control=tp_inst._defaults.controlType;var timezoneList=[-720,-660,-600,-570,-540,-480,-420,-360,-300,-270,-240,-210,-180,-120,-60,0,60,120,180,210,240,270,300,330,345,360,390,420,480,525,540,570,600,630,660,690,720,765,780,840];null!==tp_inst._defaults.timezoneList&&(timezoneList=tp_inst._defaults.timezoneList);var tzl=timezoneList.length,tzi=0,tzv=null;if(tzl>0&&"object"!=typeof timezoneList[0])for(;tzl>tzi;tzi++)tzv=timezoneList[tzi],timezoneList[tzi]={value:tzv,label:$.timepicker.timezoneOffsetString(tzv,tp_inst.support.iso8601)};return tp_inst._defaults.timezoneList=timezoneList,tp_inst.timezone=null!==tp_inst._defaults.timezone?$.timepicker.timezoneOffsetNumber(tp_inst._defaults.timezone):-1*(new Date).getTimezoneOffset(),tp_inst.hour=tp_inst._defaults.hourtp_inst._defaults.hourMax?tp_inst._defaults.hourMax:tp_inst._defaults.hour,tp_inst.minute=tp_inst._defaults.minutetp_inst._defaults.minuteMax?tp_inst._defaults.minuteMax:tp_inst._defaults.minute,tp_inst.second=tp_inst._defaults.secondtp_inst._defaults.secondMax?tp_inst._defaults.secondMax:tp_inst._defaults.second,tp_inst.millisec=tp_inst._defaults.millisectp_inst._defaults.millisecMax?tp_inst._defaults.millisecMax:tp_inst._defaults.millisec,tp_inst.microsec=tp_inst._defaults.microsectp_inst._defaults.microsecMax?tp_inst._defaults.microsecMax:tp_inst._defaults.microsec,tp_inst.ampm="",tp_inst.$input=$input,tp_inst._defaults.altField&&(tp_inst.$altInput=$(tp_inst._defaults.altField),tp_inst._defaults.altRedirectFocus===!0&&tp_inst.$altInput.css({cursor:"pointer"}).focus(function(){$input.trigger("focus")})),(0===tp_inst._defaults.minDate||0===tp_inst._defaults.minDateTime)&&(tp_inst._defaults.minDate=new Date),(0===tp_inst._defaults.maxDate||0===tp_inst._defaults.maxDateTime)&&(tp_inst._defaults.maxDate=new Date),void 0!==tp_inst._defaults.minDate&&tp_inst._defaults.minDate instanceof Date&&(tp_inst._defaults.minDateTime=new Date(tp_inst._defaults.minDate.getTime())),void 0!==tp_inst._defaults.minDateTime&&tp_inst._defaults.minDateTime instanceof Date&&(tp_inst._defaults.minDate=new Date(tp_inst._defaults.minDateTime.getTime())),void 0!==tp_inst._defaults.maxDate&&tp_inst._defaults.maxDate instanceof Date&&(tp_inst._defaults.maxDateTime=new Date(tp_inst._defaults.maxDate.getTime())),void 0!==tp_inst._defaults.maxDateTime&&tp_inst._defaults.maxDateTime instanceof Date&&(tp_inst._defaults.maxDate=new Date(tp_inst._defaults.maxDateTime.getTime())),tp_inst.$input.bind("focus",function(){tp_inst._onFocus()}),tp_inst},_addTimePicker:function(a){var b=$.trim(this.$altInput&&this._defaults.altFieldTimeOnly?this.$input.val()+" "+this.$altInput.val():this.$input.val());this.timeDefined=this._parseTime(b),this._limitMinMaxDateTime(a,!1),this._injectTimePicker(),this._afterInject()},_parseTime:function(a,b){if(this.inst||(this.inst=$.datepicker._getInst(this.$input[0])),b||!this._defaults.timeOnly){var c=$.datepicker._get(this.inst,"dateFormat");try{var d=parseDateTimeInternal(c,this._defaults.timeFormat,a,$.datepicker._getFormatConfig(this.inst),this._defaults);if(!d.timeObj)return!1;$.extend(this,d.timeObj)}catch(e){return $.timepicker.log("Error parsing the date/time string: "+e+"\ndate/time string = "+a+"\ntimeFormat = "+this._defaults.timeFormat+"\ndateFormat = "+c),!1}return!0}var f=$.datepicker.parseTime(this._defaults.timeFormat,a,this._defaults);return f?($.extend(this,f),!0):!1},_afterInject:function(){var a=this.inst.settings;$.isFunction(a.afterInject)&&a.afterInject.call(this)},_injectTimePicker:function(){var a=this.inst.dpDiv,b=this.inst.settings,c=this,d="",e="",f=null,g={},h={},i=null,j=0,k=0;if(0===a.find("div.ui-timepicker-div").length&&b.showTimepicker){var l=" ui_tpicker_unit_hide",m=''+b.timeText+' ";for(j=0,k=this.units.length;k>j;j++){if(d=this.units[j],e=d.substr(0,1).toUpperCase()+d.substr(1),f=null!==b["show"+e]?b["show"+e]:this.support[d],g[d]=parseInt(b[d+"Max"]-(b[d+"Max"]-b[d+"Min"])%b["step"+e],10),h[d]=0,m+=''+b[d+"Text"]+'
',f&&b[d+"Grid"]>0){if(m+='',"hour"===d)for(var n=b[d+"Min"];n<=g[d];n+=parseInt(b[d+"Grid"],10)){h[d]++;var o=$.datepicker.formatTime(this.support.ampm?"hht":"HH",{hour:n},b);m+=''+o+" "}else for(var p=b[d+"Min"];p<=g[d];p+=parseInt(b[d+"Grid"],10))h[d]++,m+=''+(10>p?"0":"")+p+" ";m+="
"}m+=" "}var q=null!==b.showTimezone?b.showTimezone:this.support.timezone;m+=''+b.timezoneText+" ",m+=' ',m+=" ";var r=$(m);for(b.timeOnly===!0&&(r.prepend('"),a.find(".ui-datepicker-header, .ui-datepicker-calendar").hide()),j=0,k=c.units.length;k>j;j++)d=c.units[j],e=d.substr(0,1).toUpperCase()+d.substr(1),f=null!==b["show"+e]?b["show"+e]:this.support[d],c[d+"_slider"]=c.control.create(c,r.find(".ui_tpicker_"+d+"_slider"),d,c[d],b[d+"Min"],g[d],b["step"+e]),f&&b[d+"Grid"]>0&&(i=100*h[d]*b[d+"Grid"]/(g[d]-b[d+"Min"]),r.find(".ui_tpicker_"+d+" table").css({width:i+"%",marginLeft:b.isRTL?"0":i/(-2*h[d])+"%",marginRight:b.isRTL?i/(-2*h[d])+"%":"0",borderCollapse:"collapse"}).find("td").click(function(a){var b=$(this),e=b.html(),f=parseInt(e.replace(/[^0-9]/g),10),g=e.replace(/[^apm]/gi),h=b.data("for");"hour"===h&&(-1!==g.indexOf("p")&&12>f?f+=12:-1!==g.indexOf("a")&&12===f&&(f=0)),c.control.value(c,c[h+"_slider"],d,f),c._onTimeChange(),c._onSelectHandler()}).css({cursor:"pointer",width:100/h[d]+"%",textAlign:"center",overflow:"hidden"}));if(this.timezone_select=r.find(".ui_tpicker_timezone").append(" ").find("select"),$.fn.append.apply(this.timezone_select,$.map(b.timezoneList,function(a,b){return $(" ").val("object"==typeof a?a.value:a).text("object"==typeof a?a.label:a)})),"undefined"!=typeof this.timezone&&null!==this.timezone&&""!==this.timezone){var s=-1*new Date(this.inst.selectedYear,this.inst.selectedMonth,this.inst.selectedDay,12).getTimezoneOffset();s===this.timezone?selectLocalTimezone(c):this.timezone_select.val(this.timezone)}else"undefined"!=typeof this.hour&&null!==this.hour&&""!==this.hour?this.timezone_select.val(b.timezone):selectLocalTimezone(c);this.timezone_select.change(function(){c._onTimeChange(),c._onSelectHandler(),c._afterInject()});var t=a.find(".ui-datepicker-buttonpane");if(t.length?t.before(r):a.append(r),this.$timeObj=r.find(".ui_tpicker_time_input"),this.$timeObj.change(function(){var a=c.inst.settings.timeFormat,b=$.datepicker.parseTime(a,this.value),d=new Date;b?(d.setHours(b.hour),d.setMinutes(b.minute),d.setSeconds(b.second),$.datepicker._setTime(c.inst,d)):(this.value=c.formattedTime,this.blur())}),null!==this.inst){var u=this.timeDefined;this._onTimeChange(),this.timeDefined=u}if(this._defaults.addSliderAccess){var v=this._defaults.sliderAccessArgs,w=this._defaults.isRTL;v.isRTL=w,setTimeout(function(){if(0===r.find(".ui-slider-access").length){r.find(".ui-slider:visible").sliderAccess(v);var a=r.find(".ui-slider-access:eq(0)").outerWidth(!0);a&&r.find("table:visible").each(function(){var b=$(this),c=b.outerWidth(),d=b.css(w?"marginRight":"marginLeft").toString().replace("%",""),e=c-a,f=d*e/c+"%",g={width:e,marginRight:0,marginLeft:0};g[w?"marginRight":"marginLeft"]=f,b.css(g)})}},10)}c._limitMinMaxDateTime(this.inst,!0)}},_limitMinMaxDateTime:function(a,b){var c=this._defaults,d=new Date(a.selectedYear,a.selectedMonth,a.selectedDay);if(this._defaults.showTimepicker){if(null!==$.datepicker._get(a,"minDateTime")&&void 0!==$.datepicker._get(a,"minDateTime")&&d){var e=$.datepicker._get(a,"minDateTime"),f=new Date(e.getFullYear(),e.getMonth(),e.getDate(),0,0,0,0);(null===this.hourMinOriginal||null===this.minuteMinOriginal||null===this.secondMinOriginal||null===this.millisecMinOriginal||null===this.microsecMinOriginal)&&(this.hourMinOriginal=c.hourMin,this.minuteMinOriginal=c.minuteMin,this.secondMinOriginal=c.secondMin,this.millisecMinOriginal=c.millisecMin,this.microsecMinOriginal=c.microsecMin),a.settings.timeOnly||f.getTime()===d.getTime()?(this._defaults.hourMin=e.getHours(),this.hour<=this._defaults.hourMin?(this.hour=this._defaults.hourMin,this._defaults.minuteMin=e.getMinutes(),this.minute<=this._defaults.minuteMin?(this.minute=this._defaults.minuteMin,this._defaults.secondMin=e.getSeconds(),this.second<=this._defaults.secondMin?(this.second=this._defaults.secondMin,this._defaults.millisecMin=e.getMilliseconds(),this.millisec<=this._defaults.millisecMin?(this.millisec=this._defaults.millisecMin,this._defaults.microsecMin=e.getMicroseconds()):(this.microsec=this._defaults.hourMax?(this.hour=this._defaults.hourMax,this._defaults.minuteMax=g.getMinutes(),this.minute>=this._defaults.minuteMax?(this.minute=this._defaults.minuteMax,this._defaults.secondMax=g.getSeconds(),this.second>=this._defaults.secondMax?(this.second=this._defaults.secondMax,this._defaults.millisecMax=g.getMilliseconds(),this.millisec>=this._defaults.millisecMax?(this.millisec=this._defaults.millisecMax,this._defaults.microsecMax=g.getMicroseconds()):(this.microsec>this._defaults.microsecMax&&(this.microsec=this._defaults.microsecMax),this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.minuteMax=this.minuteMaxOriginal,this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.hourMax=this.hourMaxOriginal,this._defaults.minuteMax=this.minuteMaxOriginal,this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)}if(null!==a.settings.minTime){var i=new Date("01/01/1970 "+a.settings.minTime);this.hourj.getHours()?(this.hour=this._defaults.hourMax=j.getHours(),this.minute=this._defaults.minuteMax=j.getMinutes()):this.hour===j.getHours()&&this.minute>j.getMinutes()?this.minute=this._defaults.minuteMax=j.getMinutes():this._defaults.hourMax>j.getHours()?(this._defaults.hourMax=j.getHours(),this._defaults.minuteMax=j.getMinutes()):this._defaults.hourMax===j.getHours()===this.hour&&this._defaults.minuteMax>j.getMinutes()?this._defaults.minuteMax=j.getMinutes():this._defaults.minuteMax=59}if(void 0!==b&&b===!0){var k=parseInt(this._defaults.hourMax-(this._defaults.hourMax-this._defaults.hourMin)%this._defaults.stepHour,10),l=parseInt(this._defaults.minuteMax-(this._defaults.minuteMax-this._defaults.minuteMin)%this._defaults.stepMinute,10),m=parseInt(this._defaults.secondMax-(this._defaults.secondMax-this._defaults.secondMin)%this._defaults.stepSecond,10),n=parseInt(this._defaults.millisecMax-(this._defaults.millisecMax-this._defaults.millisecMin)%this._defaults.stepMillisec,10),o=parseInt(this._defaults.microsecMax-(this._defaults.microsecMax-this._defaults.microsecMin)%this._defaults.stepMicrosec,10);this.hour_slider&&(this.control.options(this,this.hour_slider,"hour",{min:this._defaults.hourMin,max:k,step:this._defaults.stepHour}),this.control.value(this,this.hour_slider,"hour",this.hour-this.hour%this._defaults.stepHour)),this.minute_slider&&(this.control.options(this,this.minute_slider,"minute",{min:this._defaults.minuteMin,max:l,step:this._defaults.stepMinute}),this.control.value(this,this.minute_slider,"minute",this.minute-this.minute%this._defaults.stepMinute)),this.second_slider&&(this.control.options(this,this.second_slider,"second",{min:this._defaults.secondMin,max:m,step:this._defaults.stepSecond}),this.control.value(this,this.second_slider,"second",this.second-this.second%this._defaults.stepSecond)),this.millisec_slider&&(this.control.options(this,this.millisec_slider,"millisec",{min:this._defaults.millisecMin,max:n,step:this._defaults.stepMillisec}),this.control.value(this,this.millisec_slider,"millisec",this.millisec-this.millisec%this._defaults.stepMillisec)),this.microsec_slider&&(this.control.options(this,this.microsec_slider,"microsec",{min:this._defaults.microsecMin,max:o,step:this._defaults.stepMicrosec}),this.control.value(this,this.microsec_slider,"microsec",this.microsec-this.microsec%this._defaults.stepMicrosec))}}},_onTimeChange:function(){if(this._defaults.showTimepicker){var a=this.hour_slider?this.control.value(this,this.hour_slider,"hour"):!1,b=this.minute_slider?this.control.value(this,this.minute_slider,"minute"):!1,c=this.second_slider?this.control.value(this,this.second_slider,"second"):!1,d=this.millisec_slider?this.control.value(this,this.millisec_slider,"millisec"):!1,e=this.microsec_slider?this.control.value(this,this.microsec_slider,"microsec"):!1,f=this.timezone_select?this.timezone_select.val():!1,g=this._defaults,h=g.pickerTimeFormat||g.timeFormat,i=g.pickerTimeSuffix||g.timeSuffix;"object"==typeof a&&(a=!1),"object"==typeof b&&(b=!1),"object"==typeof c&&(c=!1),"object"==typeof d&&(d=!1),"object"==typeof e&&(e=!1),"object"==typeof f&&(f=!1),a!==!1&&(a=parseInt(a,10)),b!==!1&&(b=parseInt(b,10)),c!==!1&&(c=parseInt(c,10)),d!==!1&&(d=parseInt(d,10)),e!==!1&&(e=parseInt(e,10)),f!==!1&&(f=f.toString());var j=g[12>a?"amNames":"pmNames"][0],k=a!==parseInt(this.hour,10)||b!==parseInt(this.minute,10)||c!==parseInt(this.second,10)||d!==parseInt(this.millisec,10)||e!==parseInt(this.microsec,10)||this.ampm.length>0&&12>a!=(-1!==$.inArray(this.ampm.toUpperCase(),this.amNames))||null!==this.timezone&&f!==this.timezone.toString();if(k&&(a!==!1&&(this.hour=a),b!==!1&&(this.minute=b),c!==!1&&(this.second=c),d!==!1&&(this.millisec=d),e!==!1&&(this.microsec=e),f!==!1&&(this.timezone=f),this.inst||(this.inst=$.datepicker._getInst(this.$input[0])),this._limitMinMaxDateTime(this.inst,!0)),this.support.ampm&&(this.ampm=j),this.formattedTime=$.datepicker.formatTime(g.timeFormat,this,g),this.$timeObj&&(this.$timeObj.val(h===g.timeFormat?this.formattedTime+i:$.datepicker.formatTime(h,this,g)+i),this.$timeObj[0].setSelectionRange)){var l=this.$timeObj[0].selectionStart,m=this.$timeObj[0].selectionEnd;this.$timeObj[0].setSelectionRange(l,m)}this.timeDefined=!0,k&&this._updateDateTime()}},_onSelectHandler:function(){var a=this._defaults.onSelect||this.inst.settings.onSelect,b=this.$input?this.$input[0]:null;a&&b&&a.apply(b,[this.formattedDateTime,this])},_updateDateTime:function(a){a=this.inst||a;var b=a.currentYear>0?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(a.selectedYear,a.selectedMonth,a.selectedDay),c=$.datepicker._daylightSavingAdjust(b),d=$.datepicker._get(a,"dateFormat"),e=$.datepicker._getFormatConfig(a),f=null!==c&&this.timeDefined;this.formattedDate=$.datepicker.formatDate(d,null===c?new Date:c,e);var g=this.formattedDate;if(""===a.lastVal&&(a.currentYear=a.selectedYear,a.currentMonth=a.selectedMonth,a.currentDay=a.selectedDay),this._defaults.timeOnly===!0&&this._defaults.timeOnlyShowDate===!1?g=this.formattedTime:(this._defaults.timeOnly!==!0&&(this._defaults.alwaysSetTime||f)||this._defaults.timeOnly===!0&&this._defaults.timeOnlyShowDate===!0)&&(g+=this._defaults.separator+this.formattedTime+this._defaults.timeSuffix),this.formattedDateTime=g,this._defaults.showTimepicker)if(this.$altInput&&this._defaults.timeOnly===!1&&this._defaults.altFieldTimeOnly===!0)this.$altInput.val(this.formattedTime),this.$input.val(this.formattedDate);else if(this.$altInput){this.$input.val(g);var h="",i=null!==this._defaults.altSeparator?this._defaults.altSeparator:this._defaults.separator,j=null!==this._defaults.altTimeSuffix?this._defaults.altTimeSuffix:this._defaults.timeSuffix;this._defaults.timeOnly||(h=this._defaults.altFormat?$.datepicker.formatDate(this._defaults.altFormat,null===c?new Date:c,e):this.formattedDate,h&&(h+=i)),h+=null!==this._defaults.altTimeFormat?$.datepicker.formatTime(this._defaults.altTimeFormat,this,this._defaults)+j:this.formattedTime+j,this.$altInput.val(h)}else this.$input.val(g);else this.$input.val(this.formattedDate);this.$input.trigger("change")},_onFocus:function(){if(!this.$input.val()&&this._defaults.defaultValue){this.$input.val(this._defaults.defaultValue);var a=$.datepicker._getInst(this.$input.get(0)),b=$.datepicker._get(a,"timepicker");if(b&&b._defaults.timeOnly&&a.input.val()!==a.lastVal)try{$.datepicker._updateDatepicker(a)}catch(c){$.timepicker.log(c)}}},_controls:{slider:{create:function(a,b,c,d,e,f,g){var h=a._defaults.isRTL;return b.prop("slide",null).slider({orientation:"horizontal",value:h?-1*d:d,min:h?-1*f:e,max:h?-1*e:f,step:g,slide:function(b,d){a.control.value(a,$(this),c,h?-1*d.value:d.value),a._onTimeChange()},stop:function(b,c){a._onSelectHandler()}})},options:function(a,b,c,d,e){if(a._defaults.isRTL){if("string"==typeof d)return"min"===d||"max"===d?void 0!==e?b.slider(d,-1*e):Math.abs(b.slider(d)):b.slider(d);var f=d.min,g=d.max;return d.min=d.max=null,void 0!==f&&(d.max=-1*f),void 0!==g&&(d.min=-1*g),b.slider(d)}return"string"==typeof d&&void 0!==e?b.slider(d,e):b.slider(d)},value:function(a,b,c,d){return a._defaults.isRTL?void 0!==d?b.slider("value",-1*d):Math.abs(b.slider("value")):void 0!==d?b.slider("value",d):b.slider("value")}},select:{create:function(a,b,c,d,e,f,g){for(var h='',i=a._defaults.pickerTimeFormat||a._defaults.timeFormat,j=e;f>=j;j+=g)h+='",h+="hour"===c?$.datepicker.formatTime($.trim(i.replace(/[^ht ]/gi,"")),{hour:j},a._defaults):"millisec"===c||"microsec"===c||j>=10?j:"0"+j.toString(),h+=" ";return h+=" ",b.children("select").remove(),$(h).appendTo(b).change(function(b){a._onTimeChange(),a._onSelectHandler(),a._afterInject()}),b},options:function(a,b,c,d,e){var f={},g=b.children("select");if("string"==typeof d){if(void 0===e)return g.data(d);f[d]=e}else f=d;return a.control.create(a,b,g.data("unit"),g.val(),f.min>=0?f.min:g.data("min"),f.max||g.data("max"),f.step||g.data("step"))},value:function(a,b,c,d){var e=b.children("select");return void 0!==d?e.val(d):e.val()}}}}),$.fn.extend({timepicker:function(a){a=a||{};var b=Array.prototype.slice.call(arguments);return"object"==typeof a&&(b[0]=$.extend(a,{timeOnly:!0})),$(this).each(function(){$.fn.datetimepicker.apply($(this),b)})},datetimepicker:function(a){a=a||{};var b=arguments;return"string"==typeof a?"getDate"===a||"option"===a&&2===b.length&&"string"==typeof b[1]?$.fn.datepicker.apply($(this[0]),b):this.each(function(){var a=$(this);a.datepicker.apply(a,b)}):this.each(function(){var b=$(this);b.datepicker($.timepicker._newInst(b,a)._defaults)})}}),$.datepicker.parseDateTime=function(a,b,c,d,e){var f=parseDateTimeInternal(a,b,c,d,e);if(f.timeObj){var g=f.timeObj;f.date.setHours(g.hour,g.minute,g.second,g.millisec),f.date.setMicroseconds(g.microsec)}return f.date},$.datepicker.parseTime=function(a,b,c){var d=extendRemove(extendRemove({},$.timepicker._defaults),c||{}),e=(-1!==a.replace(/\'.*?\'/g,"").indexOf("Z"),function(a,b,c){var d,e=function(a,b){var c=[];return a&&$.merge(c,a),b&&$.merge(c,b),c=$.map(c,function(a){return a.replace(/[.*+?|()\[\]{}\\]/g,"\\$&")}),"("+c.join("|")+")?"},f=function(a){var b=a.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|c{1}|t{1,2}|z|'.*?')/g),c={h:-1,m:-1,s:-1,l:-1,c:-1,t:-1,z:-1};if(b)for(var d=0;d11&&(e=c.pmNames[0]),d=d.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g,function(a){switch(a){case"HH":return("0"+f).slice(-2);case"H":return f;case"hh":return("0"+convert24to12(f)).slice(-2);case"h":return convert24to12(f);case"mm":return("0"+b.minute).slice(-2);case"m":return b.minute;case"ss":return("0"+b.second).slice(-2);case"s":return b.second;case"l":return("00"+b.millisec).slice(-3);case"c":return("00"+b.microsec).slice(-3);case"z":return $.timepicker.timezoneOffsetString(null===b.timezone?c.timezone:b.timezone,!1);case"Z":return $.timepicker.timezoneOffsetString(null===b.timezone?c.timezone:b.timezone,!0);case"T":return e.charAt(0).toUpperCase();case"TT":return e.toUpperCase();case"t":return e.charAt(0).toLowerCase();case"tt":return e.toLowerCase();default:return a.replace(/'/g,"")}})},$.datepicker._base_selectDate=$.datepicker._selectDate,$.datepicker._selectDate=function(a,b){var c,d=this._getInst($(a)[0]),e=this._get(d,"timepicker");e&&d.settings.showTimepicker?(e._limitMinMaxDateTime(d,!0),c=d.inline,d.inline=d.stay_open=!0,this._base_selectDate(a,b),d.inline=c,d.stay_open=!1,this._notifyChange(d),this._updateDatepicker(d)):this._base_selectDate(a,b)},$.datepicker._base_updateDatepicker=$.datepicker._updateDatepicker,$.datepicker._updateDatepicker=function(a){var b=a.input[0];if(!($.datepicker._curInst&&$.datepicker._curInst!==a&&$.datepicker._datepickerShowing&&$.datepicker._lastInput!==b||"boolean"==typeof a.stay_open&&a.stay_open!==!1)){this._base_updateDatepicker(a);var c=this._get(a,"timepicker");c&&c._addTimePicker(a)}},$.datepicker._base_doKeyPress=$.datepicker._doKeyPress,$.datepicker._doKeyPress=function(a){var b=$.datepicker._getInst(a.target),c=$.datepicker._get(b,"timepicker");if(c&&$.datepicker._get(b,"constrainInput")){var d=c.support.ampm,e=null!==c._defaults.showTimezone?c._defaults.showTimezone:c.support.timezone,f=$.datepicker._possibleChars($.datepicker._get(b,"dateFormat")),g=c._defaults.timeFormat.toString().replace(/[hms]/g,"").replace(/TT/g,d?"APM":"").replace(/Tt/g,d?"AaPpMm":"").replace(/tT/g,d?"AaPpMm":"").replace(/T/g,d?"AP":"").replace(/tt/g,d?"apm":"").replace(/t/g,d?"ap":"")+" "+c._defaults.separator+c._defaults.timeSuffix+(e?c._defaults.timezoneList.join(""):"")+c._defaults.amNames.join("")+c._defaults.pmNames.join("")+f,h=String.fromCharCode(void 0===a.charCode?a.keyCode:a.charCode);return a.ctrlKey||" ">h||!f||g.indexOf(h)>-1}return $.datepicker._base_doKeyPress(a)},$.datepicker._base_updateAlternate=$.datepicker._updateAlternate,$.datepicker._updateAlternate=function(a){var b=this._get(a,"timepicker");if(b){var c=b._defaults.altField;if(c){var d=(b._defaults.altFormat||b._defaults.dateFormat,this._getDate(a)),e=$.datepicker._getFormatConfig(a),f="",g=b._defaults.altSeparator?b._defaults.altSeparator:b._defaults.separator,h=b._defaults.altTimeSuffix?b._defaults.altTimeSuffix:b._defaults.timeSuffix,i=null!==b._defaults.altTimeFormat?b._defaults.altTimeFormat:b._defaults.timeFormat;f+=$.datepicker.formatTime(i,b,b._defaults)+h,b._defaults.timeOnly||b._defaults.altFieldTimeOnly||null===d||(f=b._defaults.altFormat?$.datepicker.formatDate(b._defaults.altFormat,d,e)+g+f:b.formattedDate+g+f),$(c).val(a.input.val()?f:"")}}else $.datepicker._base_updateAlternate(a)},$.datepicker._base_doKeyUp=$.datepicker._doKeyUp,$.datepicker._doKeyUp=function(a){var b=$.datepicker._getInst(a.target),c=$.datepicker._get(b,"timepicker");
+if(c&&c._defaults.timeOnly&&b.input.val()!==b.lastVal)try{$.datepicker._updateDatepicker(b)}catch(d){$.timepicker.log(d)}return $.datepicker._base_doKeyUp(a)},$.datepicker._base_gotoToday=$.datepicker._gotoToday,$.datepicker._gotoToday=function(a){var b=this._getInst($(a)[0]);this._base_gotoToday(a);var c=this._get(b,"timepicker");if(c){var d=$.timepicker.timezoneOffsetNumber(c.timezone),e=new Date;e.setMinutes(e.getMinutes()+e.getTimezoneOffset()+parseInt(d,10)),this._setTime(b,e),this._setDate(b,e),c._onSelectHandler()}},$.datepicker._disableTimepickerDatepicker=function(a){var b=this._getInst(a);if(b){var c=this._get(b,"timepicker");$(a).datepicker("getDate"),c&&(b.settings.showTimepicker=!1,c._defaults.showTimepicker=!1,c._updateDateTime(b))}},$.datepicker._enableTimepickerDatepicker=function(a){var b=this._getInst(a);if(b){var c=this._get(b,"timepicker");$(a).datepicker("getDate"),c&&(b.settings.showTimepicker=!0,c._defaults.showTimepicker=!0,c._addTimePicker(b),c._updateDateTime(b))}},$.datepicker._setTime=function(a,b){var c=this._get(a,"timepicker");if(c){var d=c._defaults;c.hour=b?b.getHours():d.hour,c.minute=b?b.getMinutes():d.minute,c.second=b?b.getSeconds():d.second,c.millisec=b?b.getMilliseconds():d.millisec,c.microsec=b?b.getMicroseconds():d.microsec,c._limitMinMaxDateTime(a,!0),c._onTimeChange(),c._updateDateTime(a)}},$.datepicker._setTimeDatepicker=function(a,b,c){var d=this._getInst(a);if(d){var e=this._get(d,"timepicker");if(e){this._setDateFromField(d);var f;b&&("string"==typeof b?(e._parseTime(b,c),f=new Date,f.setHours(e.hour,e.minute,e.second,e.millisec),f.setMicroseconds(e.microsec)):(f=new Date(b.getTime()),f.setMicroseconds(b.getMicroseconds())),"Invalid Date"===f.toString()&&(f=void 0),this._setTime(d,f))}}},$.datepicker._base_setDateDatepicker=$.datepicker._setDateDatepicker,$.datepicker._setDateDatepicker=function(a,b){var c=this._getInst(a),d=b;if(c){"string"==typeof b&&(d=new Date(b),d.getTime()||(this._base_setDateDatepicker.apply(this,arguments),d=$(a).datepicker("getDate")));var e,f=this._get(c,"timepicker");d instanceof Date?(e=new Date(d.getTime()),e.setMicroseconds(d.getMicroseconds())):e=d,f&&e&&(f.support.timezone||null!==f._defaults.timezone||(f.timezone=-1*e.getTimezoneOffset()),d=$.timepicker.timezoneAdjust(d,$.timepicker.timezoneOffsetString(-d.getTimezoneOffset()),f.timezone),e=$.timepicker.timezoneAdjust(e,$.timepicker.timezoneOffsetString(-e.getTimezoneOffset()),f.timezone)),this._updateDatepicker(c),this._base_setDateDatepicker.apply(this,arguments),this._setTimeDatepicker(a,e,!0)}},$.datepicker._base_getDateDatepicker=$.datepicker._getDateDatepicker,$.datepicker._getDateDatepicker=function(a,b){var c=this._getInst(a);if(c){var d=this._get(c,"timepicker");if(d){void 0===c.lastVal&&this._setDateFromField(c,b);var e=this._getDate(c),f=null;return f=d.$altInput&&d._defaults.altFieldTimeOnly?d.$input.val()+" "+d.$altInput.val():"INPUT"!==d.$input.get(0).tagName&&d.$altInput?d.$altInput.val():d.$input.val(),e&&d._parseTime(f,!c.settings.timeOnly)&&(e.setHours(d.hour,d.minute,d.second,d.millisec),e.setMicroseconds(d.microsec),null!=d.timezone&&(d.support.timezone||null!==d._defaults.timezone||(d.timezone=-1*e.getTimezoneOffset()),e=$.timepicker.timezoneAdjust(e,d.timezone,$.timepicker.timezoneOffsetString(-e.getTimezoneOffset())))),e}return this._base_getDateDatepicker(a,b)}},$.datepicker._base_parseDate=$.datepicker.parseDate,$.datepicker.parseDate=function(a,b,c){var d;try{d=this._base_parseDate(a,b,c)}catch(e){if(!(e.indexOf(":")>=0))throw e;d=this._base_parseDate(a,b.substring(0,b.length-(e.length-e.indexOf(":")-2)),c),$.timepicker.log("Error parsing the date string: "+e+"\ndate string = "+b+"\ndate format = "+a)}return d},$.datepicker._base_formatDate=$.datepicker._formatDate,$.datepicker._formatDate=function(a,b,c,d){var e=this._get(a,"timepicker");return e?(e._updateDateTime(a),e.$input.val()):this._base_formatDate(a)},$.datepicker._base_optionDatepicker=$.datepicker._optionDatepicker,$.datepicker._optionDatepicker=function(a,b,c){var d,e=this._getInst(a);if(!e)return null;var f=this._get(e,"timepicker");if(f){var g,h,i,j,k=null,l=null,m=null,n=f._defaults.evnts,o={};if("string"==typeof b){if("minDate"===b||"minDateTime"===b)k=c;else if("maxDate"===b||"maxDateTime"===b)l=c;else if("onSelect"===b)m=c;else if(n.hasOwnProperty(b)){if("undefined"==typeof c)return n[b];o[b]=c,d={}}}else if("object"==typeof b){b.minDate?k=b.minDate:b.minDateTime?k=b.minDateTime:b.maxDate?l=b.maxDate:b.maxDateTime&&(l=b.maxDateTime);for(g in n)n.hasOwnProperty(g)&&b[g]&&(o[g]=b[g])}for(g in o)o.hasOwnProperty(g)&&(n[g]=o[g],d||(d=$.extend({},b)),delete d[g]);if(d&&isEmptyObject(d))return;if(k?(k=0===k?new Date:new Date(k),f._defaults.minDate=k,f._defaults.minDateTime=k):l?(l=0===l?new Date:new Date(l),f._defaults.maxDate=l,f._defaults.maxDateTime=l):m&&(f._defaults.onSelect=m),k||l)return j=$(a),i=j.datetimepicker("getDate"),h=this._base_optionDatepicker.call($.datepicker,a,d||b,c),j.datetimepicker("setDate",i),h}return void 0===c?this._base_optionDatepicker.call($.datepicker,a,b):this._base_optionDatepicker.call($.datepicker,a,d||b,c)};var isEmptyObject=function(a){var b;for(b in a)if(a.hasOwnProperty(b))return!1;return!0},extendRemove=function(a,b){$.extend(a,b);for(var c in b)(null===b[c]||void 0===b[c])&&(a[c]=b[c]);return a},detectSupport=function(a){var b=a.replace(/'.*?'/g,"").toLowerCase(),c=function(a,b){return-1!==a.indexOf(b)?!0:!1};return{hour:c(b,"h"),minute:c(b,"m"),second:c(b,"s"),millisec:c(b,"l"),microsec:c(b,"c"),timezone:c(b,"z"),ampm:c(b,"t")&&c(a,"h"),iso8601:c(a,"Z")}},convert24to12=function(a){return a%=12,0===a&&(a=12),String(a)},computeEffectiveSetting=function(a,b){return a&&a[b]?a[b]:$.timepicker._defaults[b]},splitDateTime=function(a,b){var c=computeEffectiveSetting(b,"separator"),d=computeEffectiveSetting(b,"timeFormat"),e=d.split(c),f=e.length,g=a.split(c),h=g.length;return h>1?{dateString:g.splice(0,h-f).join(c),timeString:g.splice(0,f).join(c)}:{dateString:a,timeString:""}},parseDateTimeInternal=function(a,b,c,d,e){var f,g,h;if(g=splitDateTime(c,e),f=$.datepicker._base_parseDate(a,g.dateString,d),""===g.timeString)return{date:f};if(h=$.datepicker.parseTime(b,g.timeString,e),!h)throw"Wrong time format";return{date:f,timeObj:h}},selectLocalTimezone=function(a,b){if(a&&a.timezone_select){var c=b||new Date;a.timezone_select.val(-c.getTimezoneOffset())}};$.timepicker=new Timepicker,$.timepicker.timezoneOffsetString=function(a,b){if(isNaN(a)||a>840||-720>a)return a;var c=a,d=c%60,e=(c-d)/60,f=b?":":"",g=(c>=0?"+":"-")+("0"+Math.abs(e)).slice(-2)+f+("0"+Math.abs(d)).slice(-2);return"+00:00"===g?"Z":g},$.timepicker.timezoneOffsetNumber=function(a){var b=a.toString().replace(":","");return"Z"===b.toUpperCase()?0:/^(\-|\+)\d{4}$/.test(b)?("-"===b.substr(0,1)?-1:1)*(60*parseInt(b.substr(1,2),10)+parseInt(b.substr(3,2),10)):parseInt(a,10)},$.timepicker.timezoneAdjust=function(a,b,c){var d=$.timepicker.timezoneOffsetNumber(b),e=$.timepicker.timezoneOffsetNumber(c);return isNaN(e)||a.setMinutes(a.getMinutes()+-d- -e),a},$.timepicker.timeRange=function(a,b,c){return $.timepicker.handleRange("timepicker",a,b,c)},$.timepicker.datetimeRange=function(a,b,c){$.timepicker.handleRange("datetimepicker",a,b,c)},$.timepicker.dateRange=function(a,b,c){$.timepicker.handleRange("datepicker",a,b,c)},$.timepicker.handleRange=function(a,b,c,d){function e(e,f){var g=b[a]("getDate"),h=c[a]("getDate"),i=e[a]("getDate");if(null!==g){var j=new Date(g.getTime()),k=new Date(g.getTime());j.setMilliseconds(j.getMilliseconds()+d.minInterval),k.setMilliseconds(k.getMilliseconds()+d.maxInterval),d.minInterval>0&&j>h?c[a]("setDate",j):d.maxInterval>0&&h>k?c[a]("setDate",k):g>h&&f[a]("setDate",i)}}function f(b,c,e){if(b.val()){var f=b[a].call(b,"getDate");null!==f&&d.minInterval>0&&("minDate"===e&&f.setMilliseconds(f.getMilliseconds()+d.minInterval),"maxDate"===e&&f.setMilliseconds(f.getMilliseconds()-d.minInterval)),f.getTime&&c[a].call(c,"option",e,f)}}d=$.extend({},{minInterval:0,maxInterval:0,start:{},end:{}},d);var g=!1;return"timepicker"===a&&(g=!0,a="datetimepicker"),$.fn[a].call(b,$.extend({timeOnly:g,onClose:function(a,b){e($(this),c)},onSelect:function(a){f($(this),c,"minDate")}},d,d.start)),$.fn[a].call(c,$.extend({timeOnly:g,onClose:function(a,c){e($(this),b)},onSelect:function(a){f($(this),b,"maxDate")}},d,d.end)),e(b,c),f(b,c,"minDate"),f(c,b,"maxDate"),$([b.get(0),c.get(0)])},$.timepicker.log=function(){window.console&&window.console.log&&window.console.log.apply&&window.console.log.apply(window.console,Array.prototype.slice.call(arguments))},$.timepicker._util={_extendRemove:extendRemove,_isEmptyObject:isEmptyObject,_convert24to12:convert24to12,_detectSupport:detectSupport,_selectLocalTimezone:selectLocalTimezone,_computeEffectiveSetting:computeEffectiveSetting,_splitDateTime:splitDateTime,_parseDateTimeInternal:parseDateTimeInternal},Date.prototype.getMicroseconds||(Date.prototype.microseconds=0,Date.prototype.getMicroseconds=function(){return this.microseconds},Date.prototype.setMicroseconds=function(a){return this.setMilliseconds(this.getMilliseconds()+Math.floor(a/1e3)),this.microseconds=a%1e3,this}),$.timepicker.version="1.6.3"}});
\ No newline at end of file
diff --git a/jquery-ui-timepicker-addon.json b/jquery-ui-timepicker-addon.json
index dff0de3..6d41321 100644
--- a/jquery-ui-timepicker-addon.json
+++ b/jquery-ui-timepicker-addon.json
@@ -2,8 +2,8 @@
"name": "jquery-ui-timepicker-addon",
"title": "jQuery Timepicker Addon",
"description": "A timepicker addon for jQueryUI datepicker.",
- "version": "1.4.5",
- "modified": "2014-05-26",
+ "version": "1.6.3",
+ "modified": "2016-04-20",
"homepage": "http://trentrichardson.com/examples/timepicker",
"author": {
"name": "Trent Richardson",
@@ -25,4 +25,4 @@
"jquery": "*"
},
"keywords": []
-}
\ No newline at end of file
+}
diff --git a/package.json b/package.json
index 8b61dc2..81e0e6d 100644
--- a/package.json
+++ b/package.json
@@ -1,17 +1,35 @@
{
- "name": "jQuery-Timepicker-Addon",
- "version": "0.0.0-ignored",
+ "name": "jquery-ui-timepicker-addon",
+ "version": "1.6.3",
"engines": {
"node": ">= 0.8.0"
},
+ "keywords": [
+ "timepicker", "jquery", "datetime", "jquery-ui"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/trentrichardson/jQuery-Timepicker-Addon.git"
+ },
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "https://raw.github.com/trentrichardson/jQuery-Timepicker-Addon/master/LICENSE-MIT"
+ }
+ ],
+ "homepage": "http://trentrichardson.com/examples/timepicker",
+ "main": "./dist/jquery-ui-timepicker-addon.js",
+ "browser": "./dist/jquery-ui-timepicker-addon.js",
"scripts": {
- "test": "grunt jasmine"
+ "start": "grunt",
+ "test": "grunt test"
},
+ "dependencies": {},
"devDependencies": {
"grunt-contrib-jshint": "~0.1.1",
"grunt-contrib-jasmine": "~0.5.1",
"grunt-contrib-concat": "~0.4.0",
- "grunt-contrib-uglify": "~0.1.1",
+ "grunt-contrib-uglify": "~0.9.1",
"grunt-contrib-watch": "~0.2.0",
"grunt-contrib-clean": "~0.4.0",
"grunt-contrib-copy": "~0.4.0",
@@ -19,4 +37,4 @@
"grunt-replace": "~0.4.4",
"grunt": "~0.4.1"
}
-}
\ No newline at end of file
+}
diff --git a/src/.jshintrc b/src/.jshintrc
index d3d850f..a624e4c 100644
--- a/src/.jshintrc
+++ b/src/.jshintrc
@@ -13,5 +13,5 @@
"boss": true,
"eqnull": true,
"browser": true,
- "predef": ["jQuery"]
+ "predef": ["jQuery","define"]
}
diff --git a/src/docs/examples.html b/src/docs/examples.html
index 77dd2ef..fa112d1 100644
--- a/src/docs/examples.html
+++ b/src/docs/examples.html
@@ -9,7 +9,9 @@ Examples
Using Timezones
Slider Modifications
Alternate Fields
+ Time Input
Time Restraints
+ Time Ranges
Utilities
@@ -51,6 +53,20 @@ Basic Initializations
+
+
+
+
Timepicker comes with a collection of localization files and one combined file with all available localizations. $.timepicker.regional["your localization code here"] is a simple object with preset options:
+
+
+
+
+$('#basic_example_4').timepicker(
+ $.timepicker.regional['es']
+);
+
+
+
Using Timezones
@@ -82,27 +98,6 @@ Using Timezones
{ value: -480, label: 'Pacific' }
]
});
-
-
-
-
-
-
You may also use timezone string abbreviations for values. This should be used with caution. Computing accurate javascript Date objects may not be possible when trying to retrieve or set the date from timepicker (see setDate and getDate examples below). For simple input values however this should work.
-
-
-
-
-$('#timezone_example_3').datetimepicker({
- timeFormat: 'HH:mm z',
- timezone: 'MT',
- timezoneList: [
- { value: 'ET', label: 'Eastern'},
- { value: 'CT', label: 'Central' },
- { value: 'MT', label: 'Mountain' },
- { value: 'PT', label: 'Pacific' }
- ]
-});
-
@@ -165,6 +160,20 @@ Slider Modifications
});
+
+
+
Uses one line dropdowns instead of sliders.
+
+
+
+
+$('#slider_example_4andHalf').datetimepicker({
+ controlType: 'select',
+ oneLine: true,
+ timeFormat: 'hh:mm tt'
+});
+
+
Create your own control by implementing the create, options, and value methods. If you want to use your new control for all instances use the $.timepicker.setDefaults({controlType:myControl}). Here we implement jQueryUI's spinner control (jQueryUI 1.9+).
@@ -258,7 +267,7 @@
Alternate Fields
});
-
+
With inline mode using altField:
@@ -271,6 +280,38 @@
Alternate Fields
altField: "#alt_example_4_alt",
altFieldTimeOnly: false
});
+
+
+
+
+
+
+
+
Allows time displayed inside the picker to allow being typed in.
+
+
+
+
+$('#input_example_1').datetimepicker({
+ timeInput: true,
+ timeFormat: "hh:mm tt"
+});
+
+
+
+
+
+
Don't show any sliders, only the time input.
+
+
+
+
+$('#input_example_2').datetimepicker({
+ timeInput: true,
+ timeFormat: "hh:mm tt",
+ showHour: false,
+ showMinute: false
+});
@@ -319,17 +360,20 @@ Time Restraints
+
+ Time Ranges
+
+
+
+
+
Timepicker also includes some shortcut methods for ranges:
+
+
+
+
+
+var startDateTextBox = $('#range_example_2_start');
+var endDateTextBox = $('#range_example_2_end');
+
+$.timepicker.datetimeRange(
+ startDateTextBox,
+ endDateTextBox,
+ {
+ minInterval: (1000*60*60), // 1hr
+ dateFormat: 'dd M yy',
+ timeFormat: 'HH:mm',
+ start: {}, // start picker options
+ end: {} // end picker options
+ }
+);
+
+
+
+
+
+
To use only times for a time range use $.timepicker.timeRange():
+
+
+
+
+
+var startTimeTextBox = $('#range_example_3_start');
+var endTimeTextBox = $('#range_example_3_end');
+
+$.timepicker.timeRange(
+ startTimeTextBox,
+ endTimeTextBox,
+ {
+ minInterval: (1000*60*60), // 1hr
+ timeFormat: 'HH:mm',
+ start: {}, // start picker options
+ end: {} // end picker options
+ }
+);
+
+
+
+
+
@@ -436,6 +553,4 @@ Utilities
$.datepicker.parseTime('HH:mm:ss:l z', "14:36:21:765 +2000", {})
));
-
-
-
\ No newline at end of file
+
diff --git a/src/docs/footer.html b/src/docs/footer.html
index 738157d..919cf65 100644
--- a/src/docs/footer.html
+++ b/src/docs/footer.html
@@ -5,8 +5,9 @@
-
+
+
-
-
-
+
+ } catch(err) {}
+ -->
\ No newline at end of file
diff --git a/src/docs/header.html b/src/docs/header.html
index 87a0836..b9747b2 100644
--- a/src/docs/header.html
+++ b/src/docs/header.html
@@ -1,12 +1,12 @@
-
-
-
+
+
+
- Adding a Timepicker to jQuery UI Datepicker
+ Adding a Timepicker to jQuery UI Datepicker
-
-
-
-
+
+
+
-
-
-
+
+
+
-
Adding a Timepicker to jQuery UI Datepicker
-
+
Adding a Timepicker to jQuery UI Datepicker
+
The timepicker addon adds a timepicker to jQuery UI Datepicker, thus the datepicker and slider components (jQueryUI) are required for using any of these. In addition all datepicker options are still available through the timepicker addon.
-
+
If you are interested in contributing to Timepicker Addon please check it out on GitHub . If you do make additions please keep in mind I enjoy tabs over spaces,.. But contributions are welcome in any form.
-
+
Back to Blog or Follow on Twitter
-
-
Try my new app to keep you informed of your car's financing status and value.
Donation
Has this Timepicker Addon been helpful to you?
@@ -72,4 +70,4 @@
Donation
Formatting
Localization
Examples
-
\ No newline at end of file
+
diff --git a/src/docs/i18n.html b/src/docs/i18n.html
index 377252a..bd05ccf 100644
--- a/src/docs/i18n.html
+++ b/src/docs/i18n.html
@@ -19,7 +19,8 @@
Working with Localizations
closeText: 'Закрыть'
});
-
However, if you plan to use timepicker extensively you will need to include (build your own) localization. It is simply assigning those same variables to an object. As you see in the example below we maintain a separate object for timepicker. This way we aren't bound to any changes within datepicker.
+
However, if you plan to use timepicker extensively you will need to include (build your own) localization. It is simply assigning those same variables to an object.
+
As you see in the example below we maintain a separate object for timepicker. This way we aren't bound to any future changes within datepicker.
$.datepicker.regional['ru'] = {
closeText: 'Закрыть',
@@ -60,6 +61,12 @@ Working with Localizations
};
$.timepicker.setDefaults($.timepicker.regional['ru']);
+
Now all you have to do is call timepicker and the Russian localization is used. Generally you only need to include the localization file, it will setDefaults() for you.
-
You can also visit localization for datepicker for more information about datepicker localizations.
+
As of version 1.4.5 a combined file of all localizations available is included. This file DOES NOT call setDefaults(), so you will need to pass, or merge with your options.
+
+
$('#example123').timepicker($.timepicker.regional['ru']);
+
+
+
Localization files for datepicker are typically available in your jQueryUI downloads.
diff --git a/src/docs/intro.html b/src/docs/intro.html
index 8ce20d8..8708f79 100644
--- a/src/docs/intro.html
+++ b/src/docs/intro.html
@@ -21,22 +21,11 @@ Subscribe to Blog and Twitter
Download
- Download Timepicker Addon
+ Download Timepicker Addon and the required CSS .
+
Download/Contribute on GitHub (Need the entire repo? Find a bug? See if its fixed here)
- There is a small bit of required CSS (Download ):
-/* css for timepicker */
-.ui-timepicker-div .ui-widget-header { margin-bottom: 8px; }
-.ui-timepicker-div dl { text-align: left; }
-.ui-timepicker-div dl dt { float: left; clear:left; padding: 0 0 0 5px; }
-.ui-timepicker-div dl dd { margin: 0 10px 10px 45%; }
-.ui-timepicker-div td { font-size: 90%; }
-.ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; }
-
-.ui-timepicker-rtl{ direction: rtl; }
-.ui-timepicker-rtl dl { text-align: right; padding: 0 5px 0 0; }
-.ui-timepicker-rtl dl dt{ float: right; clear: right; }
-.ui-timepicker-rtl dl dd { margin: 0 45% 10px 10px; }
-
+
+ If you prefer a hosted CDN there are a couple available: CDNJS , jsDelivr .
Requirements
diff --git a/src/docs/options.html b/src/docs/options.html
index 22fc123..06201ce 100644
--- a/src/docs/options.html
+++ b/src/docs/options.html
@@ -202,13 +202,19 @@ Other Options
showButtonPanel
Default: true - Whether to show the button panel at the bottom. This is generally needed.
-
+
+ timeInput
+ Default: false - Allows direct input in time field
+
timeOnly
Default: false - Hide the datepicker and only provide a time interface.
timeOnlyShowDate
Default: false - Show the date and time in the input, but only allow the timepicker.
+ afterInject
+ Default: null - Function to be called when the timepicker or selection control is injected or re-rendered. Called in the context of the timepicker instance.
+
onSelect
Default: null - Function to be called when a date is chosen or time has changed (parameters: datetimeText, datepickerInstance).
@@ -227,6 +233,9 @@ Other Options
showTimepicker
Default: true - Whether to show the timepicker within the datepicker.
+ oneLine
+ Default: false - Try to show the time dropdowns all on one line. This should be used with controlType 'select' and as few units as possible.
+
addSliderAccess
Default: false - Adds the sliderAccess plugin to sliders within timepicker
diff --git a/src/i18n/jquery-ui-timepicker-af.js b/src/i18n/jquery-ui-timepicker-af.js
index fe9f8c5..8dbec3e 100644
--- a/src/i18n/jquery-ui-timepicker-af.js
+++ b/src/i18n/jquery-ui-timepicker-af.js
@@ -13,6 +13,7 @@
currentText: 'Huidige Tyd',
closeText: 'Klaar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-am.js b/src/i18n/jquery-ui-timepicker-am.js
index 69cce8a..676c8b9 100644
--- a/src/i18n/jquery-ui-timepicker-am.js
+++ b/src/i18n/jquery-ui-timepicker-am.js
@@ -13,6 +13,7 @@
currentText: 'Այժմ',
closeText: 'Փակել',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-bg.js b/src/i18n/jquery-ui-timepicker-bg.js
index 1efb439..58f076e 100644
--- a/src/i18n/jquery-ui-timepicker-bg.js
+++ b/src/i18n/jquery-ui-timepicker-bg.js
@@ -13,6 +13,7 @@
currentText: 'Сега',
closeText: 'Затвори',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-ca.js b/src/i18n/jquery-ui-timepicker-ca.js
index 25b4eed..84fa00e 100644
--- a/src/i18n/jquery-ui-timepicker-ca.js
+++ b/src/i18n/jquery-ui-timepicker-ca.js
@@ -13,6 +13,7 @@
currentText: 'Ara',
closeText: 'Tancar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-cs.js b/src/i18n/jquery-ui-timepicker-cs.js
index 9d358fa..26d6ec7 100644
--- a/src/i18n/jquery-ui-timepicker-cs.js
+++ b/src/i18n/jquery-ui-timepicker-cs.js
@@ -13,6 +13,7 @@
currentText: 'Nyní',
closeText: 'Zavřít',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['dop.', 'AM', 'A'],
pmNames: ['odp.', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-da.js b/src/i18n/jquery-ui-timepicker-da.js
index 7afb189..5d8072b 100644
--- a/src/i18n/jquery-ui-timepicker-da.js
+++ b/src/i18n/jquery-ui-timepicker-da.js
@@ -13,6 +13,7 @@
currentText: 'Nu',
closeText: 'Luk',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['am', 'AM', 'A'],
pmNames: ['pm', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-de.js b/src/i18n/jquery-ui-timepicker-de.js
index a0ddf9f..90c33af 100644
--- a/src/i18n/jquery-ui-timepicker-de.js
+++ b/src/i18n/jquery-ui-timepicker-de.js
@@ -13,6 +13,7 @@
currentText: 'Jetzt',
closeText: 'Fertig',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['vorm.', 'AM', 'A'],
pmNames: ['nachm.', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-el.js b/src/i18n/jquery-ui-timepicker-el.js
index 6b7e827..72aec6d 100644
--- a/src/i18n/jquery-ui-timepicker-el.js
+++ b/src/i18n/jquery-ui-timepicker-el.js
@@ -7,15 +7,16 @@
hourText: 'Ώρες',
minuteText: 'Λεπτά',
secondText: 'Δευτερόλεπτα',
- millisecText: 'μιλιδευτερόλεπτο',
- microsecText: 'Microseconds',
+ millisecText: 'Χιλιοστοδευτερόλεπτα',
+ microsecText: 'Μικροδευτερόλεπτα',
timezoneText: 'Ζώνη ώρας',
currentText: 'Τώρα',
closeText: 'Κλείσιμο',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['π.μ.', 'AM', 'A'],
pmNames: ['μ.μ.', 'PM', 'P'],
isRTL: false
};
$.timepicker.setDefaults($.timepicker.regional['el']);
-})(jQuery);
+})(jQuery);
\ No newline at end of file
diff --git a/src/i18n/jquery-ui-timepicker-es.js b/src/i18n/jquery-ui-timepicker-es.js
index d73a1e8..b19ba11 100644
--- a/src/i18n/jquery-ui-timepicker-es.js
+++ b/src/i18n/jquery-ui-timepicker-es.js
@@ -1,5 +1,6 @@
/* Spanish translation for the jQuery Timepicker Addon */
/* Written by Ianaré Sévi */
+/* Modified by Carlos Martínez */
(function($) {
$.timepicker.regional['es'] = {
timeOnlyTitle: 'Elegir una hora',
@@ -9,10 +10,11 @@
secondText: 'Segundos',
millisecText: 'Milisegundos',
microsecText: 'Microsegundos',
- timezoneText: 'Huso horario',
- currentText: 'Ahora',
+ timezoneText: 'Uso horario',
+ currentText: 'Hoy',
closeText: 'Cerrar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-et.js b/src/i18n/jquery-ui-timepicker-et.js
index 2e64cc8..b2bb766 100644
--- a/src/i18n/jquery-ui-timepicker-et.js
+++ b/src/i18n/jquery-ui-timepicker-et.js
@@ -13,6 +13,7 @@
currentText: 'Praegu',
closeText: 'Valmis',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-eu.js b/src/i18n/jquery-ui-timepicker-eu.js
index 8884e4a..7e0c0f3 100644
--- a/src/i18n/jquery-ui-timepicker-eu.js
+++ b/src/i18n/jquery-ui-timepicker-eu.js
@@ -14,6 +14,7 @@
currentText: 'Orain',
closeText: 'Itxi',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-fa.js b/src/i18n/jquery-ui-timepicker-fa.js
new file mode 100644
index 0000000..25e2403
--- /dev/null
+++ b/src/i18n/jquery-ui-timepicker-fa.js
@@ -0,0 +1,22 @@
+/* Persian translation for the jQuery Timepicker Addon */
+/* Written by Meysam Pour Ganji */
+(function($) {
+ $.timepicker.regional['fa'] = {
+ timeOnlyTitle: 'انتخاب زمان',
+ timeText: 'زمان',
+ hourText: 'ساعت',
+ minuteText: 'دقیقه',
+ secondText: 'ثانیه',
+ millisecText: 'میلی ثانیه',
+ microsecText: 'میکرو ثانیه',
+ timezoneText: 'منطقه زمانی',
+ currentText: 'الان',
+ closeText: 'انتخاب',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['قبل ظهر', 'AM', 'A'],
+ pmNames: ['بعد ظهر', 'PM', 'P'],
+ isRTL: true
+ };
+ $.timepicker.setDefaults($.timepicker.regional['fa']);
+})(jQuery);
diff --git a/src/i18n/jquery-ui-timepicker-fi.js b/src/i18n/jquery-ui-timepicker-fi.js
index 3f1d95e..4493d4c 100644
--- a/src/i18n/jquery-ui-timepicker-fi.js
+++ b/src/i18n/jquery-ui-timepicker-fi.js
@@ -13,6 +13,7 @@
currentText: 'Nyt',
closeText: 'Sulje',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['ap.', 'AM', 'A'],
pmNames: ['ip.', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-fr.js b/src/i18n/jquery-ui-timepicker-fr.js
index a8a46fe..0002517 100644
--- a/src/i18n/jquery-ui-timepicker-fr.js
+++ b/src/i18n/jquery-ui-timepicker-fr.js
@@ -13,6 +13,7 @@
currentText: 'Maintenant',
closeText: 'Terminé',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-gl.js b/src/i18n/jquery-ui-timepicker-gl.js
index 900e377..4b9501f 100644
--- a/src/i18n/jquery-ui-timepicker-gl.js
+++ b/src/i18n/jquery-ui-timepicker-gl.js
@@ -13,6 +13,7 @@
currentText: 'Agora',
closeText: 'Pechar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-he.js b/src/i18n/jquery-ui-timepicker-he.js
index eb71018..9b78cbd 100644
--- a/src/i18n/jquery-ui-timepicker-he.js
+++ b/src/i18n/jquery-ui-timepicker-he.js
@@ -13,6 +13,7 @@
currentText: "עכשיו",
closeText:"סגור",
timeFormat: "HH:mm",
+ timeSuffix: '',
amNames: ['לפנה"צ', 'AM', 'A'],
pmNames: ['אחה"צ', 'PM', 'P'],
isRTL: true
diff --git a/src/i18n/jquery-ui-timepicker-hr.js b/src/i18n/jquery-ui-timepicker-hr.js
index c314b8e..b60f89a 100644
--- a/src/i18n/jquery-ui-timepicker-hr.js
+++ b/src/i18n/jquery-ui-timepicker-hr.js
@@ -13,6 +13,7 @@
currentText: 'Sada',
closeText: 'Gotovo',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-hu.js b/src/i18n/jquery-ui-timepicker-hu.js
index fd1f5e1..6bdb0f4 100644
--- a/src/i18n/jquery-ui-timepicker-hu.js
+++ b/src/i18n/jquery-ui-timepicker-hu.js
@@ -13,6 +13,7 @@
currentText: 'Most',
closeText: 'Kész',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['de.', 'AM', 'A'],
pmNames: ['du.', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-id.js b/src/i18n/jquery-ui-timepicker-id.js
index 50a976b..9f21f50 100644
--- a/src/i18n/jquery-ui-timepicker-id.js
+++ b/src/i18n/jquery-ui-timepicker-id.js
@@ -13,6 +13,7 @@
currentText: 'Sekarang',
closeText: 'OK',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-it.js b/src/i18n/jquery-ui-timepicker-it.js
index ea976fd..540f41a 100644
--- a/src/i18n/jquery-ui-timepicker-it.js
+++ b/src/i18n/jquery-ui-timepicker-it.js
@@ -13,6 +13,7 @@
currentText: 'Adesso',
closeText: 'Chiudi',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['m.', 'AM', 'A'],
pmNames: ['p.', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-ja.js b/src/i18n/jquery-ui-timepicker-ja.js
index 15c7b79..cd3f020 100644
--- a/src/i18n/jquery-ui-timepicker-ja.js
+++ b/src/i18n/jquery-ui-timepicker-ja.js
@@ -13,6 +13,7 @@
currentText: '現時刻',
closeText: '閉じる',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['午前', 'AM', 'A'],
pmNames: ['午後', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-ko.js b/src/i18n/jquery-ui-timepicker-ko.js
index 0a41c5b..ca85b88 100644
--- a/src/i18n/jquery-ui-timepicker-ko.js
+++ b/src/i18n/jquery-ui-timepicker-ko.js
@@ -13,6 +13,7 @@
currentText: '현재 시각',
closeText: '닫기',
timeFormat: 'tt h:mm',
+ timeSuffix: '',
amNames: ['오전', 'AM', 'A'],
pmNames: ['오후', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-lt.js b/src/i18n/jquery-ui-timepicker-lt.js
index eb7b3c7..97d2b8b 100644
--- a/src/i18n/jquery-ui-timepicker-lt.js
+++ b/src/i18n/jquery-ui-timepicker-lt.js
@@ -13,6 +13,7 @@
currentText: 'Dabar',
closeText: 'Uždaryti',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['priešpiet', 'AM', 'A'],
pmNames: ['popiet', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-lv.js b/src/i18n/jquery-ui-timepicker-lv.js
new file mode 100644
index 0000000..0cbd6e6
--- /dev/null
+++ b/src/i18n/jquery-ui-timepicker-lv.js
@@ -0,0 +1,22 @@
+/* Latvian translation for the jQuery Timepicker Addon */
+/* Written by Dmitry Bogatykh */
+(function($) {
+ $.timepicker.regional['lv'] = {
+ timeOnlyTitle: 'Ievadiet laiku',
+ timeText: 'Laiks',
+ hourText: 'Stundas',
+ minuteText: 'Minūtes',
+ secondText: 'Sekundes',
+ millisecText: 'Milisekundes',
+ microsecText: 'Mikrosekundes',
+ timezoneText: 'Laika josla',
+ currentText: 'Tagad',
+ closeText: 'Aizvērt',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['AM', 'AM', 'A'],
+ pmNames: ['PM', 'PM', 'P'],
+ isRTL: false
+ };
+ $.timepicker.setDefaults($.timepicker.regional['lv']);
+})(jQuery);
\ No newline at end of file
diff --git a/src/i18n/jquery-ui-timepicker-mk.js b/src/i18n/jquery-ui-timepicker-mk.js
new file mode 100644
index 0000000..9857e01
--- /dev/null
+++ b/src/i18n/jquery-ui-timepicker-mk.js
@@ -0,0 +1,22 @@
+/* Macedonian cyrilic translation for the jQuery Timepicker Addon */
+/* Written by Vlatko Ristovski */
+(function($) {
+ $.timepicker.regional['mk'] = {
+ timeOnlyTitle: 'Одберете време',
+ timeText: 'Време',
+ hourText: 'Час',
+ minuteText: 'Минути',
+ secondText: 'Секунди',
+ millisecText: 'Милисекунди',
+ microsecText: 'Микросекунди',
+ timezoneText: 'Временска зона',
+ currentText: 'Сега',
+ closeText: 'Затвори',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['AM', 'A'],
+ pmNames: ['PM', 'P'],
+ isRTL: false
+ };
+ $.timepicker.setDefaults($.timepicker.regional['mk']);
+})(jQuery);
\ No newline at end of file
diff --git a/src/i18n/jquery-ui-timepicker-nl.js b/src/i18n/jquery-ui-timepicker-nl.js
index 8189cc4..bc71fc1 100644
--- a/src/i18n/jquery-ui-timepicker-nl.js
+++ b/src/i18n/jquery-ui-timepicker-nl.js
@@ -13,6 +13,7 @@
currentText: 'Vandaag',
closeText: 'Sluiten',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-no.js b/src/i18n/jquery-ui-timepicker-no.js
index 1eeee6d..39f32fd 100644
--- a/src/i18n/jquery-ui-timepicker-no.js
+++ b/src/i18n/jquery-ui-timepicker-no.js
@@ -13,6 +13,7 @@
currentText: 'Nå',
closeText: 'Lukk',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['am', 'AM', 'A'],
pmNames: ['pm', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-pl.js b/src/i18n/jquery-ui-timepicker-pl.js
index 5b7d4a9..0a67a79 100644
--- a/src/i18n/jquery-ui-timepicker-pl.js
+++ b/src/i18n/jquery-ui-timepicker-pl.js
@@ -13,6 +13,7 @@
currentText: 'Teraz',
closeText: 'Gotowe',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-pt-BR.js b/src/i18n/jquery-ui-timepicker-pt-BR.js
index 2c1b02f..0ad06a3 100644
--- a/src/i18n/jquery-ui-timepicker-pt-BR.js
+++ b/src/i18n/jquery-ui-timepicker-pt-BR.js
@@ -13,6 +13,7 @@
currentText: 'Agora',
closeText: 'Fechar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-pt.js b/src/i18n/jquery-ui-timepicker-pt.js
index bc549e0..0aa792e 100644
--- a/src/i18n/jquery-ui-timepicker-pt.js
+++ b/src/i18n/jquery-ui-timepicker-pt.js
@@ -13,6 +13,7 @@
currentText: 'Agora',
closeText: 'Fechar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-ro.js b/src/i18n/jquery-ui-timepicker-ro.js
index 01acce7..4f5f386 100644
--- a/src/i18n/jquery-ui-timepicker-ro.js
+++ b/src/i18n/jquery-ui-timepicker-ro.js
@@ -13,6 +13,7 @@
currentText: 'Acum',
closeText: 'Închide',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-ru.js b/src/i18n/jquery-ui-timepicker-ru.js
index d7169fa..b539a73 100644
--- a/src/i18n/jquery-ui-timepicker-ru.js
+++ b/src/i18n/jquery-ui-timepicker-ru.js
@@ -13,6 +13,7 @@
currentText: 'Сейчас',
closeText: 'Закрыть',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-sk.js b/src/i18n/jquery-ui-timepicker-sk.js
index 15700e0..eee0d0b 100644
--- a/src/i18n/jquery-ui-timepicker-sk.js
+++ b/src/i18n/jquery-ui-timepicker-sk.js
@@ -13,6 +13,7 @@
currentText: 'Teraz',
closeText: 'Zavrieť',
timeFormat: 'H:m',
+ timeSuffix: '',
amNames: ['dop.', 'AM', 'A'],
pmNames: ['pop.', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-sl.js b/src/i18n/jquery-ui-timepicker-sl.js
new file mode 100644
index 0000000..0906b10
--- /dev/null
+++ b/src/i18n/jquery-ui-timepicker-sl.js
@@ -0,0 +1,22 @@
+/* Slovenian translation for the jQuery Timepicker Addon */
+/* Written by Hadalin (https://github.com/hadalin) */
+(function($) {
+ $.timepicker.regional['sl'] = {
+ timeOnlyTitle: 'Izberite čas',
+ timeText: 'Čas',
+ hourText: 'Ura',
+ minuteText: 'Minute',
+ secondText: 'Sekunde',
+ millisecText: 'Milisekunde',
+ microsecText: 'Mikrosekunde',
+ timezoneText: 'Časovni pas',
+ currentText: 'Sedaj',
+ closeText: 'Zapri',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['dop.', 'AM', 'A'],
+ pmNames: ['pop.', 'PM', 'P'],
+ isRTL: false
+ };
+ $.timepicker.setDefaults($.timepicker.regional['sl']);
+})(jQuery);
diff --git a/src/i18n/jquery-ui-timepicker-sq.js b/src/i18n/jquery-ui-timepicker-sq.js
new file mode 100644
index 0000000..d93d88c
--- /dev/null
+++ b/src/i18n/jquery-ui-timepicker-sq.js
@@ -0,0 +1,22 @@
+/* Albanian translation for the jQuery Timepicker Addon */
+/* Written by Olti Buzi */
+(function($) {
+ $.timepicker.regional['sq'] = {
+ timeOnlyTitle: 'Zgjidh orarin',
+ timeText: 'Orari',
+ hourText: 'Ora',
+ minuteText: 'Minuta',
+ secondText: 'Sekonda',
+ millisecText: 'Minisekonda',
+ microsecText: 'Mikrosekonda',
+ timezoneText: 'Zona kohore',
+ currentText: 'Tani',
+ closeText: 'Mbyll',
+ timeFormat: 'HH:mm',
+ timeSuffix: '',
+ amNames: ['m.', 'AM', 'A'],
+ pmNames: ['p.', 'PM', 'P'],
+ isRTL: false
+ };
+ $.timepicker.setDefaults($.timepicker.regional['sq']);
+})(jQuery);
\ No newline at end of file
diff --git a/src/i18n/jquery-ui-timepicker-sr-RS.js b/src/i18n/jquery-ui-timepicker-sr-RS.js
index 1ee4aae..79a9803 100644
--- a/src/i18n/jquery-ui-timepicker-sr-RS.js
+++ b/src/i18n/jquery-ui-timepicker-sr-RS.js
@@ -13,6 +13,7 @@
currentText: 'Сада',
closeText: 'Затвори',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-sr-YU.js b/src/i18n/jquery-ui-timepicker-sr-YU.js
index cb99fb8..260881a 100644
--- a/src/i18n/jquery-ui-timepicker-sr-YU.js
+++ b/src/i18n/jquery-ui-timepicker-sr-YU.js
@@ -13,6 +13,7 @@
currentText: 'Sada',
closeText: 'Zatvori',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-sv.js b/src/i18n/jquery-ui-timepicker-sv.js
index 4540ac6..7bb0e7e 100644
--- a/src/i18n/jquery-ui-timepicker-sv.js
+++ b/src/i18n/jquery-ui-timepicker-sv.js
@@ -13,6 +13,7 @@
currentText: 'Nu',
closeText: 'Stäng',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-th.js b/src/i18n/jquery-ui-timepicker-th.js
index 7042e8c..4eb93a5 100644
--- a/src/i18n/jquery-ui-timepicker-th.js
+++ b/src/i18n/jquery-ui-timepicker-th.js
@@ -12,7 +12,8 @@
timezoneText: 'เขตเวลา',
currentText: 'เวลาปัจจุบัน',
closeText: 'ปิด',
- timeFormat: 'hh:mm tt'
+ timeFormat: 'hh:mm tt',
+ timeSuffix: ''
};
$.timepicker.setDefaults($.timepicker.regional['th']);
})(jQuery);
\ No newline at end of file
diff --git a/src/i18n/jquery-ui-timepicker-tr.js b/src/i18n/jquery-ui-timepicker-tr.js
index 51f89d6..f426e70 100644
--- a/src/i18n/jquery-ui-timepicker-tr.js
+++ b/src/i18n/jquery-ui-timepicker-tr.js
@@ -13,6 +13,7 @@
currentText: 'Şu an',
closeText: 'Tamam',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['ÖÖ', 'Ö'],
pmNames: ['ÖS', 'S'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-uk.js b/src/i18n/jquery-ui-timepicker-uk.js
index a239fe2..285c8ba 100644
--- a/src/i18n/jquery-ui-timepicker-uk.js
+++ b/src/i18n/jquery-ui-timepicker-uk.js
@@ -13,6 +13,7 @@
currentText: 'Зараз',
closeText: 'Закрити',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-vi.js b/src/i18n/jquery-ui-timepicker-vi.js
index 60d712a..59fddae 100644
--- a/src/i18n/jquery-ui-timepicker-vi.js
+++ b/src/i18n/jquery-ui-timepicker-vi.js
@@ -13,6 +13,7 @@
currentText: 'Hiện thời',
closeText: 'Đóng',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['SA', 'S'],
pmNames: ['CH', 'C'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-zh-CN.js b/src/i18n/jquery-ui-timepicker-zh-CN.js
index e73ac3b..a5ca804 100644
--- a/src/i18n/jquery-ui-timepicker-zh-CN.js
+++ b/src/i18n/jquery-ui-timepicker-zh-CN.js
@@ -13,6 +13,7 @@
currentText: '现在时间',
closeText: '关闭',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-zh-TW.js b/src/i18n/jquery-ui-timepicker-zh-TW.js
index 9cbeabf..762797b 100644
--- a/src/i18n/jquery-ui-timepicker-zh-TW.js
+++ b/src/i18n/jquery-ui-timepicker-zh-TW.js
@@ -13,6 +13,7 @@
currentText: '現在時間',
closeText: '確定',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['上午', 'AM', 'A'],
pmNames: ['下午', 'PM', 'P'],
isRTL: false
diff --git a/src/jquery-ui-timepicker-addon.css b/src/jquery-ui-timepicker-addon.css
index da12d98..586a7f0 100644
--- a/src/jquery-ui-timepicker-addon.css
+++ b/src/jquery-ui-timepicker-addon.css
@@ -4,8 +4,27 @@
.ui-timepicker-div dl dd { margin: 0 10px 10px 40%; }
.ui-timepicker-div td { font-size: 90%; }
.ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; }
+.ui-timepicker-div .ui_tpicker_unit_hide{ display: none; }
+
+.ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input { background: none; color: inherit; border: none; outline: none; border-bottom: solid 1px #555; width: 95%; }
+.ui-timepicker-div .ui_tpicker_time .ui_tpicker_time_input:focus { border-bottom-color: #aaa; }
.ui-timepicker-rtl{ direction: rtl; }
.ui-timepicker-rtl dl { text-align: right; padding: 0 5px 0 0; }
.ui-timepicker-rtl dl dt{ float: right; clear: right; }
-.ui-timepicker-rtl dl dd { margin: 0 40% 10px 10px; }
\ No newline at end of file
+.ui-timepicker-rtl dl dd { margin: 0 40% 10px 10px; }
+
+/* Shortened version style */
+.ui-timepicker-div.ui-timepicker-oneLine { padding-right: 2px; }
+.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time,
+.ui-timepicker-div.ui-timepicker-oneLine dt { display: none; }
+.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time_label { display: block; padding-top: 2px; }
+.ui-timepicker-div.ui-timepicker-oneLine dl { text-align: right; }
+.ui-timepicker-div.ui-timepicker-oneLine dl dd,
+.ui-timepicker-div.ui-timepicker-oneLine dl dd > div { display:inline-block; margin:0; }
+.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_minute:before,
+.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_second:before { content:':'; display:inline-block; }
+.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_millisec:before,
+.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_microsec:before { content:'.'; display:inline-block; }
+.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide,
+.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide:before{ display: none; }
\ No newline at end of file
diff --git a/src/jquery-ui-timepicker-addon.js b/src/jquery-ui-timepicker-addon.js
index f57e162..9bbb21f 100644
--- a/src/jquery-ui-timepicker-addon.js
+++ b/src/jquery-ui-timepicker-addon.js
@@ -7,7 +7,13 @@
* http://trentrichardson.com/Impromptu/MIT-LICENSE.txt
*/
-(function ($) {
+(function (factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery', 'jquery-ui'], factory);
+ } else {
+ factory(jQuery);
+ }
+}(function ($) {
/*
* Lets not redefine timepicker, Prevent "Uncaught RangeError: Maximum call stack size exceeded"
@@ -26,7 +32,7 @@
}
});
- /*
+ /*
* Timepicker manager.
* Use the singleton instance of this class, $.timepicker, to interact with the time picker.
* Settings for (groups of) time pickers are maintained in an instance object,
@@ -107,8 +113,10 @@
addSliderAccess: false,
sliderAccessArgs: null,
controlType: 'slider',
+ oneLine: false,
defaultValue: null,
- parse: 'strict'
+ parse: 'strict',
+ afterInject: null
};
$.extend(this._defaults, this.regional['']);
};
@@ -151,7 +159,7 @@
support: {},
control: null,
- /*
+ /*
* Override the default settings for all instances of the time picker.
* @param {Object} settings object - the new settings to use as defaults (anonymous object)
* @return {Object} the manager object
@@ -191,7 +199,7 @@
},
onChangeMonthYear: function (year, month, dp_inst) {
// Update the time as well : this prevents the time from disappearing from the $input field.
- tp_inst._updateDateTime(dp_inst);
+ // tp_inst._updateDateTime(dp_inst);
if ($.isFunction(tp_inst._defaults.evnts.onChangeMonthYear)) {
tp_inst._defaults.evnts.onChangeMonthYear.call($input[0], year, month, dp_inst, tp_inst);
}
@@ -207,7 +215,7 @@
};
for (i in overrides) {
if (overrides.hasOwnProperty(i)) {
- fns[i] = opts[i] || null;
+ fns[i] = opts[i] || this._defaults[i] || null;
}
}
@@ -224,7 +232,7 @@
// detect which units are supported
tp_inst.support = detectSupport(
- tp_inst._defaults.timeFormat +
+ tp_inst._defaults.timeFormat +
(tp_inst._defaults.pickerTimeFormat ? tp_inst._defaults.pickerTimeFormat : '') +
(tp_inst._defaults.altTimeFormat ? tp_inst._defaults.altTimeFormat : ''));
@@ -313,11 +321,12 @@
* add our sliders to the calendar
*/
_addTimePicker: function (dp_inst) {
- var currDT = (this.$altInput && this._defaults.altFieldTimeOnly) ? this.$input.val() + ' ' + this.$altInput.val() : this.$input.val();
+ var currDT = $.trim((this.$altInput && this._defaults.altFieldTimeOnly) ? this.$input.val() + ' ' + this.$altInput.val() : this.$input.val());
this.timeDefined = this._parseTime(currDT);
this._limitMinMaxDateTime(dp_inst, false);
this._injectTimePicker();
+ this._afterInject();
},
/*
@@ -354,6 +363,16 @@
}
},
+ /*
+ * Handle callback option after injecting timepicker
+ */
+ _afterInject: function() {
+ var o = this.inst.settings;
+ if ($.isFunction(o.afterInject)) {
+ o.afterInject.call(this);
+ }
+ },
+
/*
* generate and inject html for timepicker into ui datepicker
*/
@@ -372,9 +391,9 @@
// Prevent displaying twice
if ($dp.find("div.ui-timepicker-div").length === 0 && o.showTimepicker) {
- var noDisplay = ' style="display:none;"',
- html = '' + '' + o.timeText + ' ' +
- ' ';
+ var noDisplay = ' ui_tpicker_unit_hide',
+ html = '' + '' + o.timeText + ' ' +
+ ' ';
// Create the markup
for (i = 0, l = this.units.length; i < l; i++) {
@@ -388,8 +407,8 @@
max[litem] = parseInt((o[litem + 'Max'] - ((o[litem + 'Max'] - o[litem + 'Min']) % o['step' + uitem])), 10);
gridSize[litem] = 0;
- html += '' + o[litem + 'Text'] + ' ' +
- '
';
+ html += '' + o[litem + 'Text'] + ' ' +
+ '
';
if (show && o[litem + 'Grid'] > 0) {
html += '';
@@ -412,11 +431,11 @@
}
html += '';
}
-
+
// Timezone
var showTz = o.showTimezone !== null ? o.showTimezone : this.support.timezone;
- html += '' + o.timezoneText + ' ';
- html += ' ';
+ html += '' + o.timezoneText + ' ';
+ html += ' ';
// Create the elements from string
html += '';
@@ -427,7 +446,7 @@
$tp.prepend('');
$dp.find('.ui-datepicker-header, .ui-datepicker-calendar').hide();
}
-
+
// add sliders, adjust grids, add events
for (i = 0, l = tp_inst.units.length; i < l; i++) {
litem = tp_inst.units[i];
@@ -462,7 +481,7 @@
}
}
}
-
+
tp_inst.control.value(tp_inst, tp_inst[f + '_slider'], litem, n);
tp_inst._onTimeChange();
@@ -499,9 +518,10 @@
this.timezone_select.change(function () {
tp_inst._onTimeChange();
tp_inst._onSelectHandler();
+ tp_inst._afterInject();
});
// End timezone options
-
+
// inject timepicker into datepicker
var $buttonPanel = $dp.find('.ui-datepicker-buttonpane');
if ($buttonPanel.length) {
@@ -510,7 +530,21 @@
$dp.append($tp);
}
- this.$timeObj = $tp.find('.ui_tpicker_time');
+ this.$timeObj = $tp.find('.ui_tpicker_time_input');
+ this.$timeObj.change(function () {
+ var timeFormat = tp_inst.inst.settings.timeFormat;
+ var parsedTime = $.datepicker.parseTime(timeFormat, this.value);
+ var update = new Date();
+ if (parsedTime) {
+ update.setHours(parsedTime.hour);
+ update.setMinutes(parsedTime.minute);
+ update.setSeconds(parsedTime.second);
+ $.datepicker._setTime(tp_inst.inst, update);
+ } else {
+ this.value = tp_inst.formattedTime;
+ this.blur();
+ }
+ });
if (this.inst !== null) {
var timeDefined = this.timeDefined;
@@ -523,7 +557,7 @@
var sliderAccessArgs = this._defaults.sliderAccessArgs,
rtl = this._defaults.isRTL;
sliderAccessArgs.isRTL = rtl;
-
+
setTimeout(function () { // fix for inline mode
if ($tp.find('.ui-slider-access').length === 0) {
$tp.find('.ui-slider:visible').sliderAccess(sliderAccessArgs);
@@ -675,44 +709,44 @@
}
}
- if (dp_inst.settings.minTime!==null) {
- var tempMinTime=new Date("01/01/1970 " + dp_inst.settings.minTime);
+ if (dp_inst.settings.minTime!==null) {
+ var tempMinTime=new Date("01/01/1970 " + dp_inst.settings.minTime);
if (this.hourtempMaxTime.getHours()) {
- this.hour=this._defaults.hourMax=tempMaxTime.getHours();
+ this.hour=this._defaults.hourMax=tempMaxTime.getHours();
+ this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
+ } else if (this.hour===tempMaxTime.getHours() && this.minute>tempMaxTime.getMinutes()) {
this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
- } else if (this.hour===tempMaxTime.getHours() && this.minute>tempMaxTime.getMinutes()) {
- this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
} else {
if (this._defaults.hourMax>tempMaxTime.getHours()) {
this._defaults.hourMax=tempMaxTime.getHours();
- this._defaults.minuteMax=tempMaxTime.getMinutes();
+ this._defaults.minuteMax=tempMaxTime.getMinutes();
} else if (this._defaults.hourMax===tempMaxTime.getHours()===this.hour && this._defaults.minuteMax>tempMaxTime.getMinutes()) {
- this._defaults.minuteMax=tempMaxTime.getMinutes();
+ this._defaults.minuteMax=tempMaxTime.getMinutes();
} else {
this._defaults.minuteMax=59;
}
- }
+ }
}
-
+
if (adjustSliders !== undefined && adjustSliders === true) {
var hourMax = parseInt((this._defaults.hourMax - ((this._defaults.hourMax - this._defaults.hourMin) % this._defaults.stepHour)), 10),
minMax = parseInt((this._defaults.minuteMax - ((this._defaults.minuteMax - this._defaults.minuteMin) % this._defaults.stepMinute)), 10),
@@ -806,11 +840,11 @@
// If the update was done using the sliders, update the input field.
var hasChanged = (
hour !== parseInt(this.hour,10) || // sliders should all be numeric
- minute !== parseInt(this.minute,10) ||
- second !== parseInt(this.second,10) ||
- millisec !== parseInt(this.millisec,10) ||
- microsec !== parseInt(this.microsec,10) ||
- (this.ampm.length > 0 && (hour < 12) !== ($.inArray(this.ampm.toUpperCase(), this.amNames) !== -1)) ||
+ minute !== parseInt(this.minute,10) ||
+ second !== parseInt(this.second,10) ||
+ millisec !== parseInt(this.millisec,10) ||
+ microsec !== parseInt(this.microsec,10) ||
+ (this.ampm.length > 0 && (hour < 12) !== ($.inArray(this.ampm.toUpperCase(), this.amNames) !== -1)) ||
(this.timezone !== null && timezone !== this.timezone.toString()) // could be numeric or "EST" format, so use toString()
);
@@ -849,10 +883,15 @@
this.formattedTime = $.datepicker.formatTime(o.timeFormat, this, o);
if (this.$timeObj) {
if (pickerTimeFormat === o.timeFormat) {
- this.$timeObj.text(this.formattedTime + pickerTimeSuffix);
+ this.$timeObj.val(this.formattedTime + pickerTimeSuffix);
}
else {
- this.$timeObj.text($.datepicker.formatTime(pickerTimeFormat, this, o) + pickerTimeSuffix);
+ this.$timeObj.val($.datepicker.formatTime(pickerTimeFormat, this, o) + pickerTimeSuffix);
+ }
+ if (this.$timeObj[0].setSelectionRange) {
+ var sPos = this.$timeObj[0].selectionStart;
+ var ePos = this.$timeObj[0].selectionEnd;
+ this.$timeObj[0].setSelectionRange(sPos, ePos);
}
}
@@ -880,8 +919,8 @@
*/
_updateDateTime: function (dp_inst) {
dp_inst = this.inst || dp_inst;
- var dtTmp = (dp_inst.currentYear > 0?
- new Date(dp_inst.currentYear, dp_inst.currentMonth, dp_inst.currentDay) :
+ var dtTmp = (dp_inst.currentYear > 0?
+ new Date(dp_inst.currentYear, dp_inst.currentMonth, dp_inst.currentDay) :
new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),
dt = $.datepicker._daylightSavingAdjust(dtTmp),
//dt = $.datepicker._daylightSavingAdjust(new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),
@@ -891,7 +930,7 @@
timeAvailable = dt !== null && this.timeDefined;
this.formattedDate = $.datepicker.formatDate(dateFmt, (dt === null ? new Date() : dt), formatCfg);
var formattedDateTime = this.formattedDate;
-
+
// if a slider was changed but datepicker doesn't have a value yet, set it
if (dp_inst.lastVal === "") {
dp_inst.currentYear = dp_inst.selectedYear;
@@ -901,7 +940,7 @@
/*
* remove following lines to force every changes in date picker to change the input value
- * Bug descriptions: when an input field has a default value, and click on the field to pop up the date picker.
+ * Bug descriptions: when an input field has a default value, and click on the field to pop up the date picker.
* If the user manually empty the value in the input field, the date picker will never change selected value.
*/
//if (dp_inst.lastVal !== undefined && (dp_inst.lastVal.length > 0 && this.$input.val().length === 0)) {
@@ -926,7 +965,7 @@
var altFormattedDateTime = '',
altSeparator = this._defaults.altSeparator !== null ? this._defaults.altSeparator : this._defaults.separator,
altTimeSuffix = this._defaults.altTimeSuffix !== null ? this._defaults.altTimeSuffix : this._defaults.timeSuffix;
-
+
if (!this._defaults.timeOnly) {
if (this._defaults.altFormat) {
altFormattedDateTime = $.datepicker.formatDate(this._defaults.altFormat, (dt === null ? new Date() : dt), formatCfg);
@@ -993,7 +1032,7 @@
stop: function (event, ui) {
tp_inst._onSelectHandler();
}
- });
+ });
},
options: function (tp_inst, obj, unit, opts, val) {
if (tp_inst._defaults.isRTL) {
@@ -1006,7 +1045,7 @@
}
return obj.slider(opts);
}
- var min = opts.min,
+ var min = opts.min,
max = opts.max;
opts.min = opts.max = null;
if (min !== undefined) {
@@ -1038,7 +1077,7 @@
// select methods
select: {
create: function (tp_inst, obj, unit, val, min, max, step) {
- var sel = '',
+ var sel = '',
format = tp_inst._defaults.pickerTimeFormat || tp_inst._defaults.timeFormat;
for (var i = min; i <= max; i += step) {
@@ -1057,6 +1096,7 @@
$(sel).appendTo(obj).change(function (e) {
tp_inst._onTimeChange();
tp_inst._onSelectHandler();
+ tp_inst._afterInject();
});
return obj;
@@ -1068,10 +1108,10 @@
if (val === undefined) {
return $t.data(opts);
}
- o[opts] = val;
+ o[opts] = val;
}
else { o = opts; }
- return tp_inst.control.create(tp_inst, obj, $t.data('unit'), $t.val(), o.min || $t.data('min'), o.max || $t.data('max'), o.step || $t.data('step'));
+ return tp_inst.control.create(tp_inst, obj, $t.data('unit'), $t.val(), o.min>=0 ? o.min : $t.data('min'), o.max || $t.data('max'), o.step || $t.data('step'));
},
value: function (tp_inst, obj, unit, val) {
var $t = obj.children('select');
@@ -1235,7 +1275,7 @@
ampm = '';
resTime.ampm = '';
} else {
- ampm = $.inArray(treg[order.t].toUpperCase(), o.amNames) !== -1 ? 'AM' : 'PM';
+ ampm = $.inArray(treg[order.t].toUpperCase(), $.map(o.amNames, function (x,i) { return x.toUpperCase(); })) !== -1 ? 'AM' : 'PM';
resTime.ampm = o[ampm === 'AM' ? 'amNames' : 'pmNames'][0];
}
}
@@ -1303,11 +1343,11 @@
}
catch (err2) {
$.timepicker.log("Unable to parse \ntimeString: " + s + "\ntimeFormat: " + f);
- }
+ }
}
return false;
}; // end looseParse
-
+
if (typeof o.parse === "function") {
return o.parse(timeFormat, timeString, o);
}
@@ -1393,14 +1433,17 @@
$.datepicker._base_selectDate = $.datepicker._selectDate;
$.datepicker._selectDate = function (id, dateStr) {
var inst = this._getInst($(id)[0]),
- tp_inst = this._get(inst, 'timepicker');
+ tp_inst = this._get(inst, 'timepicker'),
+ was_inline;
if (tp_inst && inst.settings.showTimepicker) {
tp_inst._limitMinMaxDateTime(inst, true);
+ was_inline = inst.inline;
inst.inline = inst.stay_open = true;
//This way the onSelect handler called from calendarpicker get the full dateTime
this._base_selectDate(id, dateStr);
- inst.inline = inst.stay_open = false;
+ inst.inline = was_inline;
+ inst.stay_open = false;
this._notifyChange(inst);
this._updateDatepicker(inst);
} else {
@@ -1453,11 +1496,11 @@
.replace(/tT/g, ampm ? 'AaPpMm' : '')
.replace(/T/g, ampm ? 'AP' : '')
.replace(/tt/g, ampm ? 'apm' : '')
- .replace(/t/g, ampm ? 'ap' : '') +
- " " + tp_inst._defaults.separator +
- tp_inst._defaults.timeSuffix +
- (tz ? tp_inst._defaults.timezoneList.join('') : '') +
- (tp_inst._defaults.amNames.join('')) + (tp_inst._defaults.pmNames.join('')) +
+ .replace(/t/g, ampm ? 'ap' : '') +
+ " " + tp_inst._defaults.separator +
+ tp_inst._defaults.timeSuffix +
+ (tz ? tp_inst._defaults.timezoneList.join('') : '') +
+ (tp_inst._defaults.amNames.join('')) + (tp_inst._defaults.pmNames.join('')) +
dateChars,
chr = String.fromCharCode(event.charCode === undefined ? event.keyCode : event.charCode);
return event.ctrlKey || (chr < ' ' || !dateChars || datetimeChars.indexOf(chr) > -1);
@@ -1480,11 +1523,11 @@
var altFormat = tp_inst._defaults.altFormat || tp_inst._defaults.dateFormat,
date = this._getDate(inst),
formatCfg = $.datepicker._getFormatConfig(inst),
- altFormattedDateTime = '',
- altSeparator = tp_inst._defaults.altSeparator ? tp_inst._defaults.altSeparator : tp_inst._defaults.separator,
+ altFormattedDateTime = '',
+ altSeparator = tp_inst._defaults.altSeparator ? tp_inst._defaults.altSeparator : tp_inst._defaults.separator,
altTimeSuffix = tp_inst._defaults.altTimeSuffix ? tp_inst._defaults.altTimeSuffix : tp_inst._defaults.timeSuffix,
altTimeFormat = tp_inst._defaults.altTimeFormat !== null ? tp_inst._defaults.altTimeFormat : tp_inst._defaults.timeFormat;
-
+
altFormattedDateTime += $.datepicker.formatTime(altTimeFormat, tp_inst, tp_inst._defaults) + altTimeSuffix;
if (!tp_inst._defaults.timeOnly && !tp_inst._defaults.altFieldTimeOnly && date !== null) {
if (tp_inst._defaults.altFormat) {
@@ -1498,7 +1541,7 @@
}
}
else {
- $.datepicker._base_updateAlternate(inst);
+ $.datepicker._base_updateAlternate(inst);
}
};
@@ -1524,18 +1567,23 @@
};
/*
- * override "Today" button to also grab the time.
+ * override "Today" button to also grab the time and set it to input field.
*/
$.datepicker._base_gotoToday = $.datepicker._gotoToday;
$.datepicker._gotoToday = function (id) {
- var inst = this._getInst($(id)[0]),
- $dp = inst.dpDiv;
+ var inst = this._getInst($(id)[0]);
this._base_gotoToday(id);
var tp_inst = this._get(inst, 'timepicker');
- selectLocalTimezone(tp_inst);
+ if (!tp_inst) {
+ return;
+ }
+
+ var tzoffset = $.timepicker.timezoneOffsetNumber(tp_inst.timezone);
var now = new Date();
+ now.setMinutes(now.getMinutes() + now.getTimezoneOffset() + parseInt(tzoffset, 10));
this._setTime(inst, now);
- $('.ui-datepicker-today', $dp).click();
+ this._setDate(inst, now);
+ tp_inst._onSelectHandler();
};
/*
@@ -1587,7 +1635,7 @@
tp_inst.millisec = date ? date.getMilliseconds() : defaults.millisec;
tp_inst.microsec = date ? date.getMicroseconds() : defaults.microsec;
- //check if within min/max times..
+ //check if within min/max times..
tp_inst._limitMinMaxDateTime(inst, true);
tp_inst._onTimeChange();
@@ -1655,9 +1703,9 @@
} else {
tp_date = date;
}
-
- // This is important if you are using the timezone option, javascript's Date
- // object will only return the timezone offset for the current locale, so we
+
+ // This is important if you are using the timezone option, javascript's Date
+ // object will only return the timezone offset for the current locale, so we
// adjust it accordingly. If not using timezone option this won't matter..
// If a timezone is different in tp, keep the timezone as is
if (tp_inst && tp_date) {
@@ -1665,8 +1713,8 @@
if (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {
tp_inst.timezone = tp_date.getTimezoneOffset() * -1;
}
- date = $.timepicker.timezoneAdjust(date, tp_inst.timezone);
- tp_date = $.timepicker.timezoneAdjust(tp_date, tp_inst.timezone);
+ date = $.timepicker.timezoneAdjust(date, $.timepicker.timezoneOffsetString(-date.getTimezoneOffset()), tp_inst.timezone);
+ tp_date = $.timepicker.timezoneAdjust(tp_date, $.timepicker.timezoneOffsetString(-tp_date.getTimezoneOffset()), tp_inst.timezone);
}
this._updateDatepicker(inst);
@@ -1693,19 +1741,39 @@
}
var date = this._getDate(inst);
- if (date && tp_inst._parseTime($(target).val(), tp_inst.timeOnly)) {
+
+ var currDT = null;
+
+ if (tp_inst.$altInput && tp_inst._defaults.altFieldTimeOnly) {
+ currDT = tp_inst.$input.val() + ' ' + tp_inst.$altInput.val();
+ }
+ else if (tp_inst.$input.get(0).tagName !== 'INPUT' && tp_inst.$altInput) {
+ /**
+ * in case the datetimepicker has been applied to a non-input tag for inline UI,
+ * and the user has not configured the plugin to display only time in altInput,
+ * pick current date time from the altInput (and hope for the best, for now, until "ER1" is applied)
+ *
+ * @todo ER1. Since altInput can have a totally difference format, convert it to standard format by reading input format from "altFormat" and "altTimeFormat" option values
+ */
+ currDT = tp_inst.$altInput.val();
+ }
+ else {
+ currDT = tp_inst.$input.val();
+ }
+
+ if (date && tp_inst._parseTime(currDT, !inst.settings.timeOnly)) {
date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);
date.setMicroseconds(tp_inst.microsec);
- // This is important if you are using the timezone option, javascript's Date
- // object will only return the timezone offset for the current locale, so we
+ // This is important if you are using the timezone option, javascript's Date
+ // object will only return the timezone offset for the current locale, so we
// adjust it accordingly. If not using timezone option this won't matter..
if (tp_inst.timezone != null) {
// look out for DST if tz wasn't specified
if (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {
tp_inst.timezone = date.getTimezoneOffset() * -1;
}
- date = $.timepicker.timezoneAdjust(date, tp_inst.timezone);
+ date = $.timepicker.timezoneAdjust(date, tp_inst.timezone, $.timepicker.timezoneOffsetString(-date.getTimezoneOffset()));
}
}
return date;
@@ -1767,7 +1835,10 @@
onselect = null,
overrides = tp_inst._defaults.evnts,
fns = {},
- prop;
+ prop,
+ ret,
+ oldVal,
+ $target;
if (typeof name === 'string') { // if min/max was set with the string
if (name === 'minDate' || name === 'minDateTime') {
min = value;
@@ -1825,13 +1896,24 @@
} else if (onselect) {
tp_inst._defaults.onSelect = onselect;
}
+
+ // Datepicker will override our date when we call _base_optionDatepicker when
+ // calling minDate/maxDate, so we will first grab the value, call
+ // _base_optionDatepicker, then set our value back.
+ if(min || max){
+ $target = $(target);
+ oldVal = $target.datetimepicker('getDate');
+ ret = this._base_optionDatepicker.call($.datepicker, target, name_clone || name, value);
+ $target.datetimepicker('setDate', oldVal);
+ return ret;
+ }
}
if (value === undefined) {
return this._base_optionDatepicker.call($.datepicker, target, name);
}
return this._base_optionDatepicker.call($.datepicker, target, name_clone || name, value);
};
-
+
/*
* jQuery isEmptyObject does not check hasOwnProperty - if someone has added to the object prototype,
* it will return false for all objects
@@ -1989,7 +2071,7 @@
hours = (off - minutes) / 60,
iso = iso8601 ? ':' : '',
tz = (off >= 0 ? '+' : '-') + ('0' + Math.abs(hours)).slice(-2) + iso + ('0' + Math.abs(minutes)).slice(-2);
-
+
if (tz === '+00:00') {
return 'Z';
}
@@ -2009,7 +2091,7 @@
}
if (!/^(\-|\+)\d{4}$/.test(normalized)) { // possibly a user defined tz, so just give it back
- return tzString;
+ return parseInt(tzString, 10);
}
return ((normalized.substr(0, 1) === '-' ? -1 : 1) * // plus or minus
@@ -2020,13 +2102,15 @@
/**
* No way to set timezone in js Date, so we must adjust the minutes to compensate. (think setDate, getDate)
* @param {Date} date
+ * @param {string} fromTimezone formatted like "+0500", "-1245"
* @param {string} toTimezone formatted like "+0500", "-1245"
* @return {Date}
*/
- $.timepicker.timezoneAdjust = function (date, toTimezone) {
+ $.timepicker.timezoneAdjust = function (date, fromTimezone, toTimezone) {
+ var fromTz = $.timepicker.timezoneOffsetNumber(fromTimezone);
var toTz = $.timepicker.timezoneOffsetNumber(toTimezone);
if (!isNaN(toTz)) {
- date.setMinutes(date.getMinutes() + -date.getTimezoneOffset() - toTz);
+ date.setMinutes(date.getMinutes() + (-fromTz) - (-toTz));
}
return date;
};
@@ -2133,6 +2217,7 @@
date.setMilliseconds(date.getMilliseconds() - options.minInterval);
}
}
+
if (date.getTime) {
other[method].call(other, 'option', option, date);
}
@@ -2158,8 +2243,10 @@
}, options, options.end));
checkDates(startTime, endTime);
+
selected(startTime, endTime, 'minDate');
selected(endTime, startTime, 'maxDate');
+
return $([startTime.get(0), endTime.get(0)]);
};
@@ -2168,9 +2255,10 @@
* @param {Object} err pass any type object to log to the console during error or debugging
* @return {void}
*/
- $.timepicker.log = function (err) {
- if (window.console) {
- window.console.log(err);
+ $.timepicker.log = function () {
+ // Older IE (9, maybe 10) throw error on accessing `window.console.log.apply`, so check first.
+ if (window.console && window.console.log && window.console.log.apply) {
+ window.console.log.apply(window.console, Array.prototype.slice.call(arguments));
}
};
@@ -2206,4 +2294,4 @@
*/
$.timepicker.version = "@@version";
-})(jQuery);
+}));
diff --git a/test/SpecRunner.html b/test/SpecRunner.html
index 9793cc5..b31b2f2 100644
--- a/test/SpecRunner.html
+++ b/test/SpecRunner.html
@@ -3,7 +3,7 @@
jquery-ui-timepicker-addon Spec Runner
-
+
@@ -16,7 +16,7 @@
-
+
diff --git a/test/jquery-ui-timepicker-addon_spec.js b/test/jquery-ui-timepicker-addon_spec.js
index b5d8507..454b857 100644
--- a/test/jquery-ui-timepicker-addon_spec.js
+++ b/test/jquery-ui-timepicker-addon_spec.js
@@ -696,4 +696,58 @@ describe('datetimepicker', function() {
expect(inputFocusSpy).not.toHaveBeenCalled();
});
});
+
+ describe('timeInput', function () {
+ var $input;
+ beforeEach(function () {
+ $input = affix('input');
+ });
+ describe('option', function () {
+ it('just display, input disabled', function () {
+ $input.datetimepicker();
+ $input.trigger('focus');
+ var $timeInput = $('.ui_tpicker_time_input');
+ expect($timeInput.attr('disabled')).toBe('disabled');
+ });
+
+ it('allow type new time', function () {
+ $input.datetimepicker({timeInput: true});
+ $input.trigger('focus');
+ var $timeInput = $('.ui_tpicker_time_input');
+ expect($timeInput.attr('disabled')).toBeUndefined();
+ });
+ });
+
+ describe('behavior', function () {
+ beforeEach(function () {
+ $input.datetimepicker({timeInput: true});
+ $input.trigger('focus');
+ });
+ it('should update timepicker time', function () {
+ var inputTime = '12:34';
+ var inst = $.datepicker._getInst($input.get(0));
+ var tp_inst = $.datepicker._get(inst, 'timepicker');
+ var $timeInput = inst.dpDiv.find('.ui_tpicker_time_input');
+
+ $timeInput.val(inputTime).trigger('change');
+ expect(tp_inst.formattedTime).toEqual(inputTime);
+ });
+ it('revert to previous time value if input is invalid', function () {
+ var invalidTime = '123:456';
+ var inst = $.datepicker._getInst($input.get(0));
+ var tp_inst = $.datepicker._get(inst, 'timepicker');
+ var $timeInput = inst.dpDiv.find('.ui_tpicker_time_input');
+
+ var previousTimeString = tp_inst.formattedTime;
+ $timeInput.val(invalidTime).trigger('change');
+ expect(tp_inst.formattedTime).toEqual(previousTimeString);
+ });
+ });
+
+ afterEach(function () {
+ var $widget = $input.datepicker('widget');
+ $input.datepicker('destroy');
+ $widget.remove();
+ });
+ });
});