diff --git a/Gruntfile.js b/Gruntfile.js
index 5431c87f..48f326f0 100644
--- a/Gruntfile.js
+++ b/Gruntfile.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 a15ecb7d..31e84ae3 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)
@@ -19,6 +25,23 @@ I recommend getting the eBook [Handling Time](https://sellfy.com/p/8gxZ) as it h
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.
@@ -26,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 169e2aaf..3c1e1eae 100644
--- a/bower.json
+++ b/bower.json
@@ -1,10 +1,21 @@
{
"name": "jqueryui-timepicker-addon",
- "version": "1.5.0",
"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": {
}
}
\ 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 1f351268..3ced8630 100644
--- a/dist/i18n/jquery-ui-timepicker-addon-i18n.js
+++ b/dist/i18n/jquery-ui-timepicker-addon-i18n.js
@@ -1,6 +1,6 @@
-/*! jQuery Timepicker Addon - v1.5.0 - 2014-09-01
+/*! 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($){
@@ -20,6 +20,7 @@
currentText: 'Huidige Tyd',
closeText: 'Klaar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -41,6 +42,7 @@
currentText: 'Այժմ',
closeText: 'Փակել',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -62,6 +64,7 @@
currentText: 'Сега',
closeText: 'Затвори',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -83,6 +86,7 @@
currentText: 'Ara',
closeText: 'Tancar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -104,6 +108,7 @@
currentText: 'Nyní',
closeText: 'Zavřít',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['dop.', 'AM', 'A'],
pmNames: ['odp.', 'PM', 'P'],
isRTL: false
@@ -125,6 +130,7 @@
currentText: 'Nu',
closeText: 'Luk',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['am', 'AM', 'A'],
pmNames: ['pm', 'PM', 'P'],
isRTL: false
@@ -146,6 +152,7 @@
currentText: 'Jetzt',
closeText: 'Fertig',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['vorm.', 'AM', 'A'],
pmNames: ['nachm.', 'PM', 'P'],
isRTL: false
@@ -161,12 +168,13 @@
hourText: 'Ώρες',
minuteText: 'Λεπτά',
secondText: 'Δευτερόλεπτα',
- millisecText: 'μιλιδευτερόλεπτο',
- microsecText: 'Microseconds',
+ millisecText: 'Χιλιοστοδευτερόλεπτα',
+ microsecText: 'Μικροδευτερόλεπτα',
timezoneText: 'Ζώνη ώρας',
currentText: 'Τώρα',
closeText: 'Κλείσιμο',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['π.μ.', 'AM', 'A'],
pmNames: ['μ.μ.', 'PM', 'P'],
isRTL: false
@@ -189,6 +197,7 @@
currentText: 'Hoy',
closeText: 'Cerrar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
@@ -210,6 +219,7 @@
currentText: 'Praegu',
closeText: 'Valmis',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -232,11 +242,34 @@
currentText: 'Orain',
closeText: 'Itxi',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
};
+// 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) */
@@ -253,6 +286,7 @@
currentText: 'Nyt',
closeText: 'Sulje',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['ap.', 'AM', 'A'],
pmNames: ['ip.', 'PM', 'P'],
isRTL: false
@@ -274,6 +308,7 @@
currentText: 'Maintenant',
closeText: 'Terminé',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -295,6 +330,7 @@
currentText: 'Agora',
closeText: 'Pechar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
@@ -316,6 +352,7 @@
currentText: "עכשיו",
closeText:"סגור",
timeFormat: "HH:mm",
+ timeSuffix: '',
amNames: ['לפנה"צ', 'AM', 'A'],
pmNames: ['אחה"צ', 'PM', 'P'],
isRTL: true
@@ -337,6 +374,7 @@
currentText: 'Sada',
closeText: 'Gotovo',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
@@ -358,6 +396,7 @@
currentText: 'Most',
closeText: 'Kész',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['de.', 'AM', 'A'],
pmNames: ['du.', 'PM', 'P'],
isRTL: false
@@ -379,6 +418,7 @@
currentText: 'Sekarang',
closeText: 'OK',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -400,6 +440,7 @@
currentText: 'Adesso',
closeText: 'Chiudi',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['m.', 'AM', 'A'],
pmNames: ['p.', 'PM', 'P'],
isRTL: false
@@ -421,6 +462,7 @@
currentText: '現時刻',
closeText: '閉じる',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['午前', 'AM', 'A'],
pmNames: ['午後', 'PM', 'P'],
isRTL: false
@@ -442,6 +484,7 @@
currentText: '현재 시각',
closeText: '닫기',
timeFormat: 'tt h:mm',
+ timeSuffix: '',
amNames: ['오전', 'AM', 'A'],
pmNames: ['오후', 'PM', 'P'],
isRTL: false
@@ -463,11 +506,56 @@
currentText: 'Dabar',
closeText: 'Uždaryti',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['priešpiet', 'AM', 'A'],
pmNames: ['popiet', 'PM', 'P'],
isRTL: false
};
+// 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 */
@@ -484,6 +572,7 @@
currentText: 'Vandaag',
closeText: 'Sluiten',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -505,6 +594,7 @@
currentText: 'Nå',
closeText: 'Lukk',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['am', 'AM', 'A'],
pmNames: ['pm', 'PM', 'P'],
isRTL: false
@@ -526,6 +616,7 @@
currentText: 'Teraz',
closeText: 'Gotowe',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -547,6 +638,7 @@
currentText: 'Agora',
closeText: 'Fechar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
@@ -568,6 +660,7 @@
currentText: 'Agora',
closeText: 'Fechar',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['a.m.', 'AM', 'A'],
pmNames: ['p.m.', 'PM', 'P'],
isRTL: false
@@ -589,6 +682,7 @@
currentText: 'Acum',
closeText: 'Închide',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -610,6 +704,7 @@
currentText: 'Сейчас',
closeText: 'Закрыть',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -631,6 +726,7 @@
currentText: 'Teraz',
closeText: 'Zavrieť',
timeFormat: 'H:m',
+ timeSuffix: '',
amNames: ['dop.', 'AM', 'A'],
pmNames: ['pop.', 'PM', 'P'],
isRTL: false
@@ -652,11 +748,34 @@
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 */
@@ -673,6 +792,7 @@
currentText: 'Сада',
closeText: 'Затвори',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -694,6 +814,7 @@
currentText: 'Sada',
closeText: 'Zatvori',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -715,6 +836,7 @@
currentText: 'Nu',
closeText: 'Stäng',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -735,7 +857,8 @@
timezoneText: 'เขตเวลา',
currentText: 'เวลาปัจจุบัน',
closeText: 'ปิด',
- timeFormat: 'hh:mm tt'
+ timeFormat: 'hh:mm tt',
+ timeSuffix: ''
};
// source: src/i18n/jquery-ui-timepicker-tr.js
@@ -754,6 +877,7 @@
currentText: 'Şu an',
closeText: 'Tamam',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['ÖÖ', 'Ö'],
pmNames: ['ÖS', 'S'],
isRTL: false
@@ -775,6 +899,7 @@
currentText: 'Зараз',
closeText: 'Закрити',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -796,6 +921,7 @@
currentText: 'Hiện thời',
closeText: 'Đóng',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['SA', 'S'],
pmNames: ['CH', 'C'],
isRTL: false
@@ -817,6 +943,7 @@
currentText: '现在时间',
closeText: '关闭',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['AM', 'A'],
pmNames: ['PM', 'P'],
isRTL: false
@@ -838,6 +965,7 @@
currentText: '現在時間',
closeText: '確定',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['上午', 'AM', 'A'],
pmNames: ['下午', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-addon-i18n.min.js b/dist/i18n/jquery-ui-timepicker-addon-i18n.min.js
index 07e4a963..0f6f4beb 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.5.0 - 2014-09-01
+/*! jQuery Timepicker Addon - v1.6.3 - 2016-04-20
* http://trentrichardson.com/examples/timepicker
-* Copyright (c) 2014 Trent Richardson; Licensed MIT */
-(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.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.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.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.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.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.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.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.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",amNames:["a.m.","AM","A"],pmNames:["p.m.","PM","P"],isRTL:!1},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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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",amNames:["dop.","AM","A"],pmNames:["pop.","PM","P"],isRTL:!1},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.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.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.regional.th={timeOnlyTitle:"เลือกเวลา",timeText:"เวลา ",hourText:"ชั่วโมง ",minuteText:"นาที",secondText:"วินาที",millisecText:"มิลลิวินาที",microsecText:"ไมโคริวินาที",timezoneText:"เขตเวลา",currentText:"เวลาปัจจุบัน",closeText:"ปิด",timeFormat:"hh:mm tt"},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.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.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.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.regional["zh-TW"]={timeOnlyTitle:"選擇時分秒",timeText:"時間",hourText:"時",minuteText:"分",secondText:"秒",millisecText:"毫秒",microsecText:"微秒",timezoneText:"時區",currentText:"現在時間",closeText:"確定",timeFormat:"HH:mm",amNames:["上午","AM","A"],pmNames:["下午","PM","P"],isRTL:!1}})(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 fe9f8c58..8dbec3e6 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 69cce8aa..676c8b96 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 1efb439a..58f076ee 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 25b4eed9..84fa00e3 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 9d358faf..26d6ec74 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 7afb1893..5d8072b3 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 a0ddf9f2..90c33afa 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 6b7e827a..72aec6d5 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 3e3b1005..b19ba110 100644
--- a/dist/i18n/jquery-ui-timepicker-es.js
+++ b/dist/i18n/jquery-ui-timepicker-es.js
@@ -14,6 +14,7 @@
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 2e64cc82..b2bb7661 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 8884e4a0..7e0c0f3d 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 00000000..25e24035
--- /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 3f1d95e5..4493d4ca 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 a8a46fe6..0002517f 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 900e3778..4b9501f0 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 eb71018f..9b78cbd4 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 c314b8e1..b60f89a4 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 fd1f5e19..6bdb0f4c 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 50a976b1..9f21f501 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 ea976fdf..540f41ad 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 15c7b79f..cd3f020e 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 0a41c5bb..ca85b889 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 eb7b3c7b..97d2b8b0 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 00000000..0cbd6e6f
--- /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 00000000..9857e010
--- /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 8189cc4a..bc71fc1c 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 1eeee6d3..39f32fd7 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 5b7d4a99..0a67a799 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 2c1b02fc..0ad06a32 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 bc549e06..0aa792ec 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 01acce77..4f5f3860 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 d7169fa2..b539a73f 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 15700e07..eee0d0b1 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
index b100fa32..0906b10f 100644
--- a/dist/i18n/jquery-ui-timepicker-sl.js
+++ b/dist/i18n/jquery-ui-timepicker-sl.js
@@ -13,6 +13,7 @@
currentText: 'Sedaj',
closeText: 'Zapri',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['dop.', 'AM', 'A'],
pmNames: ['pop.', 'PM', 'P'],
isRTL: false
diff --git a/dist/i18n/jquery-ui-timepicker-sq.js b/dist/i18n/jquery-ui-timepicker-sq.js
new file mode 100644
index 00000000..d93d88c3
--- /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 1ee4aae9..79a98039 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 cb99fb82..260881ac 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 4540ac6d..7bb0e7ed 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 7042e8c8..4eb93a52 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 51f89d62..f426e70a 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 a239fe28..285c8ba3 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 60d712a2..59fddae9 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 e73ac3bc..a5ca8043 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 9cbeabf4..762797bd 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 b1c19930..8e9f36d1 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,9 @@
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 .
@@ -126,9 +112,9 @@
Requirements
Version
-
Version 1.5.0
+
Version 1.6.3
-
Last updated on 2014-09-01
+
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
@@ -338,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).
@@ -363,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
@@ -524,6 +519,7 @@ Examples
Using Timezones
Slider Modifications
Alternate Fields
+
Time Input
Time Restraints
Time Ranges
Utilities
@@ -612,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' }
- ]
-});
-
@@ -695,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+).
@@ -788,7 +777,7 @@
Alternate Fields
});
-
+
With inline mode using altField:
@@ -801,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
+});
@@ -905,8 +926,8 @@ Time Ranges
-
+
@@ -1070,15 +1090,16 @@ 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 da12d983..586a7f04 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 0baae3e7..d37bc02b 100644
--- a/dist/jquery-ui-timepicker-addon.js
+++ b/dist/jquery-ui-timepicker-addon.js
@@ -1,7 +1,13 @@
-/*! jQuery Timepicker Addon - v1.5.0 - 2014-09-01
+/*! 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.5.0"
+ 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) {
@@ -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);
}
@@ -1450,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);
@@ -1477,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) {
@@ -1495,7 +1535,7 @@
}
}
else {
- $.datepicker._base_updateAlternate(inst);
+ $.datepicker._base_updateAlternate(inst);
}
};
@@ -1521,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);
this._setDate(inst, now);
+ tp_inst._onSelectHandler();
};
/*
@@ -1584,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();
@@ -1652,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) {
@@ -1662,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);
@@ -1690,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;
@@ -1826,8 +1891,8 @@
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
+ // 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);
@@ -1842,7 +1907,7 @@
}
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
@@ -2000,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';
}
@@ -2020,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
@@ -2031,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;
};
@@ -2144,7 +2211,7 @@
date.setMilliseconds(date.getMilliseconds() - options.minInterval);
}
}
-
+
if (date.getTime) {
other[method].call(other, 'option', option, date);
}
@@ -2170,7 +2237,7 @@
}, options, options.end));
checkDates(startTime, endTime);
-
+
selected(startTime, endTime, 'minDate');
selected(endTime, startTime, 'maxDate');
@@ -2183,7 +2250,8 @@
* @return {void}
*/
$.timepicker.log = function () {
- if (window.console) {
+ // 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));
}
};
@@ -2218,6 +2286,6 @@
/*
* Keep up with the version
*/
- $.timepicker.version = "1.5.0";
+ $.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 079d8854..7581fea2 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.5.0 - 2014-09-01
+/*! 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 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 b7f87866..611cbd60 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.5.0 - 2014-09-01
+/*! 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.5.0"}});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,s=this._getInst($(e)[0]),a=this._get(s,"timepicker");a&&s.settings.showTimepicker?(a._limitMinMaxDateTime(s,!0),i=s.inline,s.inline=s.stay_open=!0,this._base_selectDate(e,t),s.inline=i,s.stay_open=!1,this._notifyChange(s),this._updateDatepicker(s)):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]);t.dpDiv,this._base_gotoToday(e);var i=this._get(t,"timepicker");selectLocalTimezone(i);var s=new Date;this._setTime(t,s),this._setDate(t,s)},$.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,o,c,u=null,m=null,d=null,h=n._defaults.evnts,p={};if("string"==typeof t){if("minDate"===t||"minDateTime"===t)u=i;else if("maxDate"===t||"maxDateTime"===t)m=i;else if("onSelect"===t)d=i;else if(h.hasOwnProperty(t)){if(i===void 0)return h[t];p[t]=i,s={}}}else if("object"==typeof t){t.minDate?u=t.minDate:t.minDateTime?u=t.minDateTime:t.maxDate?m=t.maxDate:t.maxDateTime&&(m=t.maxDateTime);for(r in h)h.hasOwnProperty(r)&&t[r]&&(p[r]=t[r])}for(r in p)p.hasOwnProperty(r)&&(h[r]=p[r],s||(s=$.extend({},t)),delete s[r]);if(s&&isEmptyObject(s))return;if(u?(u=0===u?new Date:new Date(u),n._defaults.minDate=u,n._defaults.minDateTime=u):m?(m=0===m?new Date:new Date(m),n._defaults.maxDate=m,n._defaults.maxDateTime=m):d&&(n._defaults.onSelect=d),u||m)return c=$(e),o=c.datetimepicker("getDate"),l=this._base_optionDatepicker.call($.datepicker,e,s||t,i),c.datetimepicker("setDate",o),l}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(){window.console&&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(e){return this.setMilliseconds(this.getMilliseconds()+Math.floor(e/1e3)),this.microseconds=e%1e3,this}),$.timepicker.version="1.5.0"}})(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 fed5e8c5..6d413218 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.5.0",
- "modified": "2014-09-01",
+ "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 8b61dc2d..81e0e6dc 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 d3d850f6..a624e4ce 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 47650391..fa112d14 100644
--- a/src/docs/examples.html
+++ b/src/docs/examples.html
@@ -9,6 +9,7 @@ Examples
Using Timezones
Slider Modifications
Alternate Fields
+ Time Input
Time Restraints
Time Ranges
Utilities
@@ -97,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' }
- ]
-});
-
@@ -180,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+).
@@ -273,7 +267,7 @@
Alternate Fields
});
-
+
With inline mode using altField:
@@ -286,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
+});
@@ -390,8 +416,8 @@ Time Ranges
-
-
\ No newline at end of file
+
diff --git a/src/docs/footer.html b/src/docs/footer.html
index 5f1c5adc..919cf651 100644
--- a/src/docs/footer.html
+++ b/src/docs/footer.html
@@ -23,15 +23,16 @@
-
-
-
+
+ } catch(err) {}
+ -->
\ No newline at end of file
diff --git a/src/docs/header.html b/src/docs/header.html
index 4aa1f4c5..b9747b28 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/intro.html b/src/docs/intro.html
index 573240da..8708f797 100644
--- a/src/docs/intro.html
+++ b/src/docs/intro.html
@@ -21,22 +21,9 @@
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 .
diff --git a/src/docs/options.html b/src/docs/options.html
index 22fc1231..06201cea 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 fe9f8c58..8dbec3e6 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 69cce8aa..676c8b96 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 1efb439a..58f076ee 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 25b4eed9..84fa00e3 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 9d358faf..26d6ec74 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 7afb1893..5d8072b3 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 a0ddf9f2..90c33afa 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 6b7e827a..72aec6d5 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 3e3b1005..b19ba110 100644
--- a/src/i18n/jquery-ui-timepicker-es.js
+++ b/src/i18n/jquery-ui-timepicker-es.js
@@ -14,6 +14,7 @@
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 2e64cc82..b2bb7661 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 8884e4a0..7e0c0f3d 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 00000000..25e24035
--- /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 3f1d95e5..4493d4ca 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 a8a46fe6..0002517f 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 900e3778..4b9501f0 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 eb71018f..9b78cbd4 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 c314b8e1..b60f89a4 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 fd1f5e19..6bdb0f4c 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 50a976b1..9f21f501 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 ea976fdf..540f41ad 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 15c7b79f..cd3f020e 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 0a41c5bb..ca85b889 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 eb7b3c7b..97d2b8b0 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 00000000..0cbd6e6f
--- /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 00000000..9857e010
--- /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 8189cc4a..bc71fc1c 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 1eeee6d3..39f32fd7 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 5b7d4a99..0a67a799 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 2c1b02fc..0ad06a32 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 bc549e06..0aa792ec 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 01acce77..4f5f3860 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 d7169fa2..b539a73f 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 15700e07..eee0d0b1 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
index b100fa32..0906b10f 100644
--- a/src/i18n/jquery-ui-timepicker-sl.js
+++ b/src/i18n/jquery-ui-timepicker-sl.js
@@ -13,6 +13,7 @@
currentText: 'Sedaj',
closeText: 'Zapri',
timeFormat: 'HH:mm',
+ timeSuffix: '',
amNames: ['dop.', 'AM', 'A'],
pmNames: ['pop.', 'PM', 'P'],
isRTL: false
diff --git a/src/i18n/jquery-ui-timepicker-sq.js b/src/i18n/jquery-ui-timepicker-sq.js
new file mode 100644
index 00000000..d93d88c3
--- /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 1ee4aae9..79a98039 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 cb99fb82..260881ac 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 4540ac6d..7bb0e7ed 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 7042e8c8..4eb93a52 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 51f89d62..f426e70a 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 a239fe28..285c8ba3 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 60d712a2..59fddae9 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 e73ac3bc..a5ca8043 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 9cbeabf4..762797bd 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 da12d983..586a7f04 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 58d66539..9bbb21f2 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) {
@@ -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);
}
@@ -1456,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);
@@ -1483,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) {
@@ -1501,7 +1541,7 @@
}
}
else {
- $.datepicker._base_updateAlternate(inst);
+ $.datepicker._base_updateAlternate(inst);
}
};
@@ -1527,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);
this._setDate(inst, now);
+ tp_inst._onSelectHandler();
};
/*
@@ -1590,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();
@@ -1658,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) {
@@ -1668,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);
@@ -1696,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;
@@ -1832,8 +1897,8 @@
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
+ // 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);
@@ -1848,7 +1913,7 @@
}
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
@@ -2006,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';
}
@@ -2026,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
@@ -2037,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;
};
@@ -2150,7 +2217,7 @@
date.setMilliseconds(date.getMilliseconds() - options.minInterval);
}
}
-
+
if (date.getTime) {
other[method].call(other, 'option', option, date);
}
@@ -2176,7 +2243,7 @@
}, options, options.end));
checkDates(startTime, endTime);
-
+
selected(startTime, endTime, 'minDate');
selected(endTime, startTime, 'maxDate');
@@ -2189,7 +2256,8 @@
* @return {void}
*/
$.timepicker.log = function () {
- if (window.console) {
+ // 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));
}
};
@@ -2226,4 +2294,4 @@
*/
$.timepicker.version = "@@version";
-})(jQuery);
+}));
diff --git a/test/jquery-ui-timepicker-addon_spec.js b/test/jquery-ui-timepicker-addon_spec.js
index b5d85071..454b857e 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();
+ });
+ });
});