{"version":3,"sources":["jsdelivr-header.js","/wp/plugins/flash-toolkit/trunk/assets/js/jquery-ui-timepicker-addon/jquery-ui-timepicker-addon.js"],"names":[],"mappings":"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","file":"/wp/plugins/flash-toolkit/trunk/assets/js/jquery-ui-timepicker-addon/jquery-ui-timepicker-addon.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.48.0.\n * Original file: /wp/plugins/flash-toolkit/trunk/assets/js/jquery-ui-timepicker-addon/jquery-ui-timepicker-addon.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*! jQuery Timepicker Addon - v1.6.3 - 2016-04-20\n* http://trentrichardson.com/examples/timepicker\n* Copyright (c) 2016 Trent Richardson; Licensed MIT */\n(function (factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(['jquery', 'jquery-ui'], factory);\n\t} else {\n\t\tfactory(jQuery);\n\t}\n}(function ($) {\n\n\t/*\n\t* Lets not redefine timepicker, Prevent \"Uncaught RangeError: Maximum call stack size exceeded\"\n\t*/\n\t$.ui.timepicker = $.ui.timepicker || {};\n\tif ($.ui.timepicker.version) {\n\t\treturn;\n\t}\n\n\t/*\n\t* Extend jQueryUI, get it started with our version number\n\t*/\n\t$.extend($.ui, {\n\t\ttimepicker: {\n\t\t\tversion: \"1.6.3\"\n\t\t}\n\t});\n\n\t/*\n\t* Timepicker manager.\n\t* Use the singleton instance of this class, $.timepicker, to interact with the time picker.\n\t* Settings for (groups of) time pickers are maintained in an instance object,\n\t* allowing multiple different settings on the same page.\n\t*/\n\tvar Timepicker = function () {\n\t\tthis.regional = []; // Available regional settings, indexed by language code\n\t\tthis.regional[''] = { // Default regional settings\n\t\t\tcurrentText: 'Now',\n\t\t\tcloseText: 'Done',\n\t\t\tamNames: ['AM', 'A'],\n\t\t\tpmNames: ['PM', 'P'],\n\t\t\ttimeFormat: 'HH:mm',\n\t\t\ttimeSuffix: '',\n\t\t\ttimeOnlyTitle: 'Choose Time',\n\t\t\ttimeText: 'Time',\n\t\t\thourText: 'Hour',\n\t\t\tminuteText: 'Minute',\n\t\t\tsecondText: 'Second',\n\t\t\tmillisecText: 'Millisecond',\n\t\t\tmicrosecText: 'Microsecond',\n\t\t\ttimezoneText: 'Time Zone',\n\t\t\tisRTL: false\n\t\t};\n\t\tthis._defaults = { // Global defaults for all the datetime picker instances\n\t\t\tshowButtonPanel: true,\n\t\t\ttimeOnly: false,\n\t\t\ttimeOnlyShowDate: false,\n\t\t\tshowHour: null,\n\t\t\tshowMinute: null,\n\t\t\tshowSecond: null,\n\t\t\tshowMillisec: null,\n\t\t\tshowMicrosec: null,\n\t\t\tshowTimezone: null,\n\t\t\tshowTime: true,\n\t\t\tstepHour: 1,\n\t\t\tstepMinute: 1,\n\t\t\tstepSecond: 1,\n\t\t\tstepMillisec: 1,\n\t\t\tstepMicrosec: 1,\n\t\t\thour: 0,\n\t\t\tminute: 0,\n\t\t\tsecond: 0,\n\t\t\tmillisec: 0,\n\t\t\tmicrosec: 0,\n\t\t\ttimezone: null,\n\t\t\thourMin: 0,\n\t\t\tminuteMin: 0,\n\t\t\tsecondMin: 0,\n\t\t\tmillisecMin: 0,\n\t\t\tmicrosecMin: 0,\n\t\t\thourMax: 23,\n\t\t\tminuteMax: 59,\n\t\t\tsecondMax: 59,\n\t\t\tmillisecMax: 999,\n\t\t\tmicrosecMax: 999,\n\t\t\tminDateTime: null,\n\t\t\tmaxDateTime: null,\n\t\t\tmaxTime: null,\n\t\t\tminTime: null,\n\t\t\tonSelect: null,\n\t\t\thourGrid: 0,\n\t\t\tminuteGrid: 0,\n\t\t\tsecondGrid: 0,\n\t\t\tmillisecGrid: 0,\n\t\t\tmicrosecGrid: 0,\n\t\t\talwaysSetTime: true,\n\t\t\tseparator: ' ',\n\t\t\taltFieldTimeOnly: true,\n\t\t\taltTimeFormat: null,\n\t\t\taltSeparator: null,\n\t\t\taltTimeSuffix: null,\n\t\t\taltRedirectFocus: true,\n\t\t\tpickerTimeFormat: null,\n\t\t\tpickerTimeSuffix: null,\n\t\t\tshowTimepicker: true,\n\t\t\ttimezoneList: null,\n\t\t\taddSliderAccess: false,\n\t\t\tsliderAccessArgs: null,\n\t\t\tcontrolType: 'slider',\n\t\t\toneLine: false,\n\t\t\tdefaultValue: null,\n\t\t\tparse: 'strict',\n\t\t\tafterInject: null\n\t\t};\n\t\t$.extend(this._defaults, this.regional['']);\n\t};\n\n\t$.extend(Timepicker.prototype, {\n\t\t$input: null,\n\t\t$altInput: null,\n\t\t$timeObj: null,\n\t\tinst: null,\n\t\thour_slider: null,\n\t\tminute_slider: null,\n\t\tsecond_slider: null,\n\t\tmillisec_slider: null,\n\t\tmicrosec_slider: null,\n\t\ttimezone_select: null,\n\t\tmaxTime: null,\n\t\tminTime: null,\n\t\thour: 0,\n\t\tminute: 0,\n\t\tsecond: 0,\n\t\tmillisec: 0,\n\t\tmicrosec: 0,\n\t\ttimezone: null,\n\t\thourMinOriginal: null,\n\t\tminuteMinOriginal: null,\n\t\tsecondMinOriginal: null,\n\t\tmillisecMinOriginal: null,\n\t\tmicrosecMinOriginal: null,\n\t\thourMaxOriginal: null,\n\t\tminuteMaxOriginal: null,\n\t\tsecondMaxOriginal: null,\n\t\tmillisecMaxOriginal: null,\n\t\tmicrosecMaxOriginal: null,\n\t\tampm: '',\n\t\tformattedDate: '',\n\t\tformattedTime: '',\n\t\tformattedDateTime: '',\n\t\ttimezoneList: null,\n\t\tunits: ['hour', 'minute', 'second', 'millisec', 'microsec'],\n\t\tsupport: {},\n\t\tcontrol: null,\n\n\t\t/*\n\t\t* Override the default settings for all instances of the time picker.\n\t\t* @param  {Object} settings  object - the new settings to use as defaults (anonymous object)\n\t\t* @return {Object} the manager object\n\t\t*/\n\t\tsetDefaults: function (settings) {\n\t\t\textendRemove(this._defaults, settings || {});\n\t\t\treturn this;\n\t\t},\n\n\t\t/*\n\t\t* Create a new Timepicker instance\n\t\t*/\n\t\t_newInst: function ($input, opts) {\n\t\t\tvar tp_inst = new Timepicker(),\n\t\t\t\tinlineSettings = {},\n\t\t\t\tfns = {},\n\t\t\t\toverrides, i;\n\n\t\t\tfor (var attrName in this._defaults) {\n\t\t\t\tif (this._defaults.hasOwnProperty(attrName)) {\n\t\t\t\t\tvar attrValue = $input.attr('time:' + attrName);\n\t\t\t\t\tif (attrValue) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tinlineSettings[attrName] = eval(attrValue);\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\tinlineSettings[attrName] = attrValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\toverrides = {\n\t\t\t\tbeforeShow: function (input, dp_inst) {\n\t\t\t\t\tif ($.isFunction(tp_inst._defaults.evnts.beforeShow)) {\n\t\t\t\t\t\treturn tp_inst._defaults.evnts.beforeShow.call($input[0], input, dp_inst, tp_inst);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tonChangeMonthYear: function (year, month, dp_inst) {\n\t\t\t\t\t// Update the time as well : this prevents the time from disappearing from the $input field.\n\t\t\t\t\t// tp_inst._updateDateTime(dp_inst);\n\t\t\t\t\tif ($.isFunction(tp_inst._defaults.evnts.onChangeMonthYear)) {\n\t\t\t\t\t\ttp_inst._defaults.evnts.onChangeMonthYear.call($input[0], year, month, dp_inst, tp_inst);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tonClose: function (dateText, dp_inst) {\n\t\t\t\t\tif (tp_inst.timeDefined === true && $input.val() !== '') {\n\t\t\t\t\t\ttp_inst._updateDateTime(dp_inst);\n\t\t\t\t\t}\n\t\t\t\t\tif ($.isFunction(tp_inst._defaults.evnts.onClose)) {\n\t\t\t\t\t\ttp_inst._defaults.evnts.onClose.call($input[0], dateText, dp_inst, tp_inst);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\tfor (i in overrides) {\n\t\t\t\tif (overrides.hasOwnProperty(i)) {\n\t\t\t\t\tfns[i] = opts[i] || this._defaults[i] || null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttp_inst._defaults = $.extend({}, this._defaults, inlineSettings, opts, overrides, {\n\t\t\t\tevnts: fns,\n\t\t\t\ttimepicker: tp_inst // add timepicker as a property of datepicker: $.datepicker._get(dp_inst, 'timepicker');\n\t\t\t});\n\t\t\ttp_inst.amNames = $.map(tp_inst._defaults.amNames, function (val) {\n\t\t\t\treturn val.toUpperCase();\n\t\t\t});\n\t\t\ttp_inst.pmNames = $.map(tp_inst._defaults.pmNames, function (val) {\n\t\t\t\treturn val.toUpperCase();\n\t\t\t});\n\n\t\t\t// detect which units are supported\n\t\t\ttp_inst.support = detectSupport(\n\t\t\t\t\ttp_inst._defaults.timeFormat +\n\t\t\t\t\t(tp_inst._defaults.pickerTimeFormat ? tp_inst._defaults.pickerTimeFormat : '') +\n\t\t\t\t\t(tp_inst._defaults.altTimeFormat ? tp_inst._defaults.altTimeFormat : ''));\n\n\t\t\t// controlType is string - key to our this._controls\n\t\t\tif (typeof(tp_inst._defaults.controlType) === 'string') {\n\t\t\t\tif (tp_inst._defaults.controlType === 'slider' && typeof($.ui.slider) === 'undefined') {\n\t\t\t\t\ttp_inst._defaults.controlType = 'select';\n\t\t\t\t}\n\t\t\t\ttp_inst.control = tp_inst._controls[tp_inst._defaults.controlType];\n\t\t\t}\n\t\t\t// controlType is an object and must implement create, options, value methods\n\t\t\telse {\n\t\t\t\ttp_inst.control = tp_inst._defaults.controlType;\n\t\t\t}\n\n\t\t\t// prep the timezone options\n\t\t\tvar timezoneList = [-720, -660, -600, -570, -540, -480, -420, -360, -300, -270, -240, -210, -180, -120, -60,\n\t\t\t\t\t0, 60, 120, 180, 210, 240, 270, 300, 330, 345, 360, 390, 420, 480, 525, 540, 570, 600, 630, 660, 690, 720, 765, 780, 840];\n\t\t\tif (tp_inst._defaults.timezoneList !== null) {\n\t\t\t\ttimezoneList = tp_inst._defaults.timezoneList;\n\t\t\t}\n\t\t\tvar tzl = timezoneList.length, tzi = 0, tzv = null;\n\t\t\tif (tzl > 0 && typeof timezoneList[0] !== 'object') {\n\t\t\t\tfor (; tzi < tzl; tzi++) {\n\t\t\t\t\ttzv = timezoneList[tzi];\n\t\t\t\t\ttimezoneList[tzi] = { value: tzv, label: $.timepicker.timezoneOffsetString(tzv, tp_inst.support.iso8601) };\n\t\t\t\t}\n\t\t\t}\n\t\t\ttp_inst._defaults.timezoneList = timezoneList;\n\n\t\t\t// set the default units\n\t\t\ttp_inst.timezone = tp_inst._defaults.timezone !== null ? $.timepicker.timezoneOffsetNumber(tp_inst._defaults.timezone) :\n\t\t\t\t\t\t\t((new Date()).getTimezoneOffset() * -1);\n\t\t\ttp_inst.hour = tp_inst._defaults.hour < tp_inst._defaults.hourMin ? tp_inst._defaults.hourMin :\n\t\t\t\t\t\t\ttp_inst._defaults.hour > tp_inst._defaults.hourMax ? tp_inst._defaults.hourMax : tp_inst._defaults.hour;\n\t\t\ttp_inst.minute = tp_inst._defaults.minute < tp_inst._defaults.minuteMin ? tp_inst._defaults.minuteMin :\n\t\t\t\t\t\t\ttp_inst._defaults.minute > tp_inst._defaults.minuteMax ? tp_inst._defaults.minuteMax : tp_inst._defaults.minute;\n\t\t\ttp_inst.second = tp_inst._defaults.second < tp_inst._defaults.secondMin ? tp_inst._defaults.secondMin :\n\t\t\t\t\t\t\ttp_inst._defaults.second > tp_inst._defaults.secondMax ? tp_inst._defaults.secondMax : tp_inst._defaults.second;\n\t\t\ttp_inst.millisec = tp_inst._defaults.millisec < tp_inst._defaults.millisecMin ? tp_inst._defaults.millisecMin :\n\t\t\t\t\t\t\ttp_inst._defaults.millisec > tp_inst._defaults.millisecMax ? tp_inst._defaults.millisecMax : tp_inst._defaults.millisec;\n\t\t\ttp_inst.microsec = tp_inst._defaults.microsec < tp_inst._defaults.microsecMin ? tp_inst._defaults.microsecMin :\n\t\t\t\t\t\t\ttp_inst._defaults.microsec > tp_inst._defaults.microsecMax ? tp_inst._defaults.microsecMax : tp_inst._defaults.microsec;\n\t\t\ttp_inst.ampm = '';\n\t\t\ttp_inst.$input = $input;\n\n\t\t\tif (tp_inst._defaults.altField) {\n\t\t\t\ttp_inst.$altInput = $(tp_inst._defaults.altField);\n\t\t\t\tif (tp_inst._defaults.altRedirectFocus === true) {\n\t\t\t\t\ttp_inst.$altInput.css({\n\t\t\t\t\t\tcursor: 'pointer'\n\t\t\t\t\t}).focus(function () {\n\t\t\t\t\t\t$input.trigger(\"focus\");\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tp_inst._defaults.minDate === 0 || tp_inst._defaults.minDateTime === 0) {\n\t\t\t\ttp_inst._defaults.minDate = new Date();\n\t\t\t}\n\t\t\tif (tp_inst._defaults.maxDate === 0 || tp_inst._defaults.maxDateTime === 0) {\n\t\t\t\ttp_inst._defaults.maxDate = new Date();\n\t\t\t}\n\n\t\t\t// datepicker needs minDate/maxDate, timepicker needs minDateTime/maxDateTime..\n\t\t\tif (tp_inst._defaults.minDate !== undefined && tp_inst._defaults.minDate instanceof Date) {\n\t\t\t\ttp_inst._defaults.minDateTime = new Date(tp_inst._defaults.minDate.getTime());\n\t\t\t}\n\t\t\tif (tp_inst._defaults.minDateTime !== undefined && tp_inst._defaults.minDateTime instanceof Date) {\n\t\t\t\ttp_inst._defaults.minDate = new Date(tp_inst._defaults.minDateTime.getTime());\n\t\t\t}\n\t\t\tif (tp_inst._defaults.maxDate !== undefined && tp_inst._defaults.maxDate instanceof Date) {\n\t\t\t\ttp_inst._defaults.maxDateTime = new Date(tp_inst._defaults.maxDate.getTime());\n\t\t\t}\n\t\t\tif (tp_inst._defaults.maxDateTime !== undefined && tp_inst._defaults.maxDateTime instanceof Date) {\n\t\t\t\ttp_inst._defaults.maxDate = new Date(tp_inst._defaults.maxDateTime.getTime());\n\t\t\t}\n\t\t\ttp_inst.$input.bind('focus', function () {\n\t\t\t\ttp_inst._onFocus();\n\t\t\t});\n\n\t\t\treturn tp_inst;\n\t\t},\n\n\t\t/*\n\t\t* add our sliders to the calendar\n\t\t*/\n\t\t_addTimePicker: function (dp_inst) {\n\t\t\tvar currDT = $.trim((this.$altInput && this._defaults.altFieldTimeOnly) ? this.$input.val() + ' ' + this.$altInput.val() : this.$input.val());\n\n\t\t\tthis.timeDefined = this._parseTime(currDT);\n\t\t\tthis._limitMinMaxDateTime(dp_inst, false);\n\t\t\tthis._injectTimePicker();\n\t\t\tthis._afterInject();\n\t\t},\n\n\t\t/*\n\t\t* parse the time string from input value or _setTime\n\t\t*/\n\t\t_parseTime: function (timeString, withDate) {\n\t\t\tif (!this.inst) {\n\t\t\t\tthis.inst = $.datepicker._getInst(this.$input[0]);\n\t\t\t}\n\n\t\t\tif (withDate || !this._defaults.timeOnly) {\n\t\t\t\tvar dp_dateFormat = $.datepicker._get(this.inst, 'dateFormat');\n\t\t\t\ttry {\n\t\t\t\t\tvar parseRes = parseDateTimeInternal(dp_dateFormat, this._defaults.timeFormat, timeString, $.datepicker._getFormatConfig(this.inst), this._defaults);\n\t\t\t\t\tif (!parseRes.timeObj) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t$.extend(this, parseRes.timeObj);\n\t\t\t\t} catch (err) {\n\t\t\t\t\t$.timepicker.log(\"Error parsing the date/time string: \" + err +\n\t\t\t\t\t\t\t\t\t\"\\ndate/time string = \" + timeString +\n\t\t\t\t\t\t\t\t\t\"\\ntimeFormat = \" + this._defaults.timeFormat +\n\t\t\t\t\t\t\t\t\t\"\\ndateFormat = \" + dp_dateFormat);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tvar timeObj = $.datepicker.parseTime(this._defaults.timeFormat, timeString, this._defaults);\n\t\t\t\tif (!timeObj) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t$.extend(this, timeObj);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\t* Handle callback option after injecting timepicker\n\t\t*/\n\t\t_afterInject: function() {\n\t\t\tvar o = this.inst.settings;\n\t\t\tif ($.isFunction(o.afterInject)) {\n\t\t\t\to.afterInject.call(this);\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\t* generate and inject html for timepicker into ui datepicker\n\t\t*/\n\t\t_injectTimePicker: function () {\n\t\t\tvar $dp = this.inst.dpDiv,\n\t\t\t\to = this.inst.settings,\n\t\t\t\ttp_inst = this,\n\t\t\t\tlitem = '',\n\t\t\t\tuitem = '',\n\t\t\t\tshow = null,\n\t\t\t\tmax = {},\n\t\t\t\tgridSize = {},\n\t\t\t\tsize = null,\n\t\t\t\ti = 0,\n\t\t\t\tl = 0;\n\n\t\t\t// Prevent displaying twice\n\t\t\tif ($dp.find(\"div.ui-timepicker-div\").length === 0 && o.showTimepicker) {\n\t\t\t\tvar noDisplay = ' ui_tpicker_unit_hide',\n\t\t\t\t\thtml = '<div class=\"ui-timepicker-div' + (o.isRTL ? ' ui-timepicker-rtl' : '') + (o.oneLine && o.controlType === 'select' ? ' ui-timepicker-oneLine' : '') + '\"><dl>' + '<dt class=\"ui_tpicker_time_label' + ((o.showTime) ? '' : noDisplay) + '\">' + o.timeText + '</dt>' +\n\t\t\t\t\t\t\t\t'<dd class=\"ui_tpicker_time '+ ((o.showTime) ? '' : noDisplay) + '\"><input class=\"ui_tpicker_time_input\" ' + (o.timeInput ? '' : 'disabled') + '/></dd>';\n\n\t\t\t\t// Create the markup\n\t\t\t\tfor (i = 0, l = this.units.length; i < l; i++) {\n\t\t\t\t\tlitem = this.units[i];\n\t\t\t\t\tuitem = litem.substr(0, 1).toUpperCase() + litem.substr(1);\n\t\t\t\t\tshow = o['show' + uitem] !== null ? o['show' + uitem] : this.support[litem];\n\n\t\t\t\t\t// Added by Peter Medeiros:\n\t\t\t\t\t// - Figure out what the hour/minute/second max should be based on the step values.\n\t\t\t\t\t// - Example: if stepMinute is 15, then minMax is 45.\n\t\t\t\t\tmax[litem] = parseInt((o[litem + 'Max'] - ((o[litem + 'Max'] - o[litem + 'Min']) % o['step' + uitem])), 10);\n\t\t\t\t\tgridSize[litem] = 0;\n\n\t\t\t\t\thtml += '<dt class=\"ui_tpicker_' + litem + '_label' + (show ? '' : noDisplay) + '\">' + o[litem + 'Text'] + '</dt>' +\n\t\t\t\t\t\t\t\t'<dd class=\"ui_tpicker_' + litem + (show ? '' : noDisplay) + '\"><div class=\"ui_tpicker_' + litem + '_slider' + (show ? '' : noDisplay) + '\"></div>';\n\n\t\t\t\t\tif (show && o[litem + 'Grid'] > 0) {\n\t\t\t\t\t\thtml += '<div style=\"padding-left: 1px\"><table class=\"ui-tpicker-grid-label\"><tr>';\n\n\t\t\t\t\t\tif (litem === 'hour') {\n\t\t\t\t\t\t\tfor (var h = o[litem + 'Min']; h <= max[litem]; h += parseInt(o[litem + 'Grid'], 10)) {\n\t\t\t\t\t\t\t\tgridSize[litem]++;\n\t\t\t\t\t\t\t\tvar tmph = $.datepicker.formatTime(this.support.ampm ? 'hht' : 'HH', {hour: h}, o);\n\t\t\t\t\t\t\t\thtml += '<td data-for=\"' + litem + '\">' + tmph + '</td>';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tfor (var m = o[litem + 'Min']; m <= max[litem]; m += parseInt(o[litem + 'Grid'], 10)) {\n\t\t\t\t\t\t\t\tgridSize[litem]++;\n\t\t\t\t\t\t\t\thtml += '<td data-for=\"' + litem + '\">' + ((m < 10) ? '0' : '') + m + '</td>';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\thtml += '</tr></table></div>';\n\t\t\t\t\t}\n\t\t\t\t\thtml += '</dd>';\n\t\t\t\t}\n\n\t\t\t\t// Timezone\n\t\t\t\tvar showTz = o.showTimezone !== null ? o.showTimezone : this.support.timezone;\n\t\t\t\thtml += '<dt class=\"ui_tpicker_timezone_label' + (showTz ? '' : noDisplay) + '\">' + o.timezoneText + '</dt>';\n\t\t\t\thtml += '<dd class=\"ui_tpicker_timezone' + (showTz ? '' : noDisplay) + '\"></dd>';\n\n\t\t\t\t// Create the elements from string\n\t\t\t\thtml += '</dl></div>';\n\t\t\t\tvar $tp = $(html);\n\n\t\t\t\t// if we only want time picker...\n\t\t\t\tif (o.timeOnly === true) {\n\t\t\t\t\t$tp.prepend('<div class=\"ui-widget-header ui-helper-clearfix ui-corner-all\">' + '<div class=\"ui-datepicker-title\">' + o.timeOnlyTitle + '</div>' + '</div>');\n\t\t\t\t\t$dp.find('.ui-datepicker-header, .ui-datepicker-calendar').hide();\n\t\t\t\t}\n\n\t\t\t\t// add sliders, adjust grids, add events\n\t\t\t\tfor (i = 0, l = tp_inst.units.length; i < l; i++) {\n\t\t\t\t\tlitem = tp_inst.units[i];\n\t\t\t\t\tuitem = litem.substr(0, 1).toUpperCase() + litem.substr(1);\n\t\t\t\t\tshow = o['show' + uitem] !== null ? o['show' + uitem] : this.support[litem];\n\n\t\t\t\t\t// add the slider\n\t\t\t\t\ttp_inst[litem + '_slider'] = tp_inst.control.create(tp_inst, $tp.find('.ui_tpicker_' + litem + '_slider'), litem, tp_inst[litem], o[litem + 'Min'], max[litem], o['step' + uitem]);\n\n\t\t\t\t\t// adjust the grid and add click event\n\t\t\t\t\tif (show && o[litem + 'Grid'] > 0) {\n\t\t\t\t\t\tsize = 100 * gridSize[litem] * o[litem + 'Grid'] / (max[litem] - o[litem + 'Min']);\n\t\t\t\t\t\t$tp.find('.ui_tpicker_' + litem + ' table').css({\n\t\t\t\t\t\t\twidth: size + \"%\",\n\t\t\t\t\t\t\tmarginLeft: o.isRTL ? '0' : ((size / (-2 * gridSize[litem])) + \"%\"),\n\t\t\t\t\t\t\tmarginRight: o.isRTL ? ((size / (-2 * gridSize[litem])) + \"%\") : '0',\n\t\t\t\t\t\t\tborderCollapse: 'collapse'\n\t\t\t\t\t\t}).find(\"td\").click(function (e) {\n\t\t\t\t\t\t\t\tvar $t = $(this),\n\t\t\t\t\t\t\t\t\th = $t.html(),\n\t\t\t\t\t\t\t\t\tn = parseInt(h.replace(/[^0-9]/g), 10),\n\t\t\t\t\t\t\t\t\tap = h.replace(/[^apm]/ig),\n\t\t\t\t\t\t\t\t\tf = $t.data('for'); // loses scope, so we use data-for\n\n\t\t\t\t\t\t\t\tif (f === 'hour') {\n\t\t\t\t\t\t\t\t\tif (ap.indexOf('p') !== -1 && n < 12) {\n\t\t\t\t\t\t\t\t\t\tn += 12;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tif (ap.indexOf('a') !== -1 && n === 12) {\n\t\t\t\t\t\t\t\t\t\t\tn = 0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ttp_inst.control.value(tp_inst, tp_inst[f + '_slider'], litem, n);\n\n\t\t\t\t\t\t\t\ttp_inst._onTimeChange();\n\t\t\t\t\t\t\t\ttp_inst._onSelectHandler();\n\t\t\t\t\t\t\t}).css({\n\t\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\t\twidth: (100 / gridSize[litem]) + '%',\n\t\t\t\t\t\t\t\ttextAlign: 'center',\n\t\t\t\t\t\t\t\toverflow: 'hidden'\n\t\t\t\t\t\t\t});\n\t\t\t\t\t} // end if grid > 0\n\t\t\t\t} // end for loop\n\n\t\t\t\t// Add timezone options\n\t\t\t\tthis.timezone_select = $tp.find('.ui_tpicker_timezone').append('<select></select>').find(\"select\");\n\t\t\t\t$.fn.append.apply(this.timezone_select,\n\t\t\t\t$.map(o.timezoneList, function (val, idx) {\n\t\t\t\t\treturn $(\"<option />\").val(typeof val === \"object\" ? val.value : val).text(typeof val === \"object\" ? val.label : val);\n\t\t\t\t}));\n\t\t\t\tif (typeof(this.timezone) !== \"undefined\" && this.timezone !== null && this.timezone !== \"\") {\n\t\t\t\t\tvar local_timezone = (new Date(this.inst.selectedYear, this.inst.selectedMonth, this.inst.selectedDay, 12)).getTimezoneOffset() * -1;\n\t\t\t\t\tif (local_timezone === this.timezone) {\n\t\t\t\t\t\tselectLocalTimezone(tp_inst);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.timezone_select.val(this.timezone);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (typeof(this.hour) !== \"undefined\" && this.hour !== null && this.hour !== \"\") {\n\t\t\t\t\t\tthis.timezone_select.val(o.timezone);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselectLocalTimezone(tp_inst);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.timezone_select.change(function () {\n\t\t\t\t\ttp_inst._onTimeChange();\n\t\t\t\t\ttp_inst._onSelectHandler();\n\t\t\t\t\ttp_inst._afterInject();\n\t\t\t\t});\n\t\t\t\t// End timezone options\n\n\t\t\t\t// inject timepicker into datepicker\n\t\t\t\tvar $buttonPanel = $dp.find('.ui-datepicker-buttonpane');\n\t\t\t\tif ($buttonPanel.length) {\n\t\t\t\t\t$buttonPanel.before($tp);\n\t\t\t\t} else {\n\t\t\t\t\t$dp.append($tp);\n\t\t\t\t}\n\n\t\t\t\tthis.$timeObj = $tp.find('.ui_tpicker_time_input');\n\t\t\t\tthis.$timeObj.change(function () {\n\t\t\t\t\tvar timeFormat = tp_inst.inst.settings.timeFormat;\n\t\t\t\t\tvar parsedTime = $.datepicker.parseTime(timeFormat, this.value);\n\t\t\t\t\tvar update = new Date();\n\t\t\t\t\tif (parsedTime) {\n\t\t\t\t\t\tupdate.setHours(parsedTime.hour);\n\t\t\t\t\t\tupdate.setMinutes(parsedTime.minute);\n\t\t\t\t\t\tupdate.setSeconds(parsedTime.second);\n\t\t\t\t\t\t$.datepicker._setTime(tp_inst.inst, update);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.value = tp_inst.formattedTime;\n\t\t\t\t\t\tthis.blur();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (this.inst !== null) {\n\t\t\t\t\tvar timeDefined = this.timeDefined;\n\t\t\t\t\tthis._onTimeChange();\n\t\t\t\t\tthis.timeDefined = timeDefined;\n\t\t\t\t}\n\n\t\t\t\t// slideAccess integration: http://trentrichardson.com/2011/11/11/jquery-ui-sliders-and-touch-accessibility/\n\t\t\t\tif (this._defaults.addSliderAccess) {\n\t\t\t\t\tvar sliderAccessArgs = this._defaults.sliderAccessArgs,\n\t\t\t\t\t\trtl = this._defaults.isRTL;\n\t\t\t\t\tsliderAccessArgs.isRTL = rtl;\n\n\t\t\t\t\tsetTimeout(function () { // fix for inline mode\n\t\t\t\t\t\tif ($tp.find('.ui-slider-access').length === 0) {\n\t\t\t\t\t\t\t$tp.find('.ui-slider:visible').sliderAccess(sliderAccessArgs);\n\n\t\t\t\t\t\t\t// fix any grids since sliders are shorter\n\t\t\t\t\t\t\tvar sliderAccessWidth = $tp.find('.ui-slider-access:eq(0)').outerWidth(true);\n\t\t\t\t\t\t\tif (sliderAccessWidth) {\n\t\t\t\t\t\t\t\t$tp.find('table:visible').each(function () {\n\t\t\t\t\t\t\t\t\tvar $g = $(this),\n\t\t\t\t\t\t\t\t\t\toldWidth = $g.outerWidth(),\n\t\t\t\t\t\t\t\t\t\toldMarginLeft = $g.css(rtl ? 'marginRight' : 'marginLeft').toString().replace('%', ''),\n\t\t\t\t\t\t\t\t\t\tnewWidth = oldWidth - sliderAccessWidth,\n\t\t\t\t\t\t\t\t\t\tnewMarginLeft = ((oldMarginLeft * newWidth) / oldWidth) + '%',\n\t\t\t\t\t\t\t\t\t\tcss = { width: newWidth, marginRight: 0, marginLeft: 0 };\n\t\t\t\t\t\t\t\t\tcss[rtl ? 'marginRight' : 'marginLeft'] = newMarginLeft;\n\t\t\t\t\t\t\t\t\t$g.css(css);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 10);\n\t\t\t\t}\n\t\t\t\t// end slideAccess integration\n\n\t\t\t\ttp_inst._limitMinMaxDateTime(this.inst, true);\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\t* This function tries to limit the ability to go outside the\n\t\t* min/max date range\n\t\t*/\n\t\t_limitMinMaxDateTime: function (dp_inst, adjustSliders) {\n\t\t\tvar o = this._defaults,\n\t\t\t\tdp_date = new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay);\n\n\t\t\tif (!this._defaults.showTimepicker) {\n\t\t\t\treturn;\n\t\t\t} // No time so nothing to check here\n\n\t\t\tif ($.datepicker._get(dp_inst, 'minDateTime') !== null && $.datepicker._get(dp_inst, 'minDateTime') !== undefined && dp_date) {\n\t\t\t\tvar minDateTime = $.datepicker._get(dp_inst, 'minDateTime'),\n\t\t\t\t\tminDateTimeDate = new Date(minDateTime.getFullYear(), minDateTime.getMonth(), minDateTime.getDate(), 0, 0, 0, 0);\n\n\t\t\t\tif (this.hourMinOriginal === null || this.minuteMinOriginal === null || this.secondMinOriginal === null || this.millisecMinOriginal === null || this.microsecMinOriginal === null) {\n\t\t\t\t\tthis.hourMinOriginal = o.hourMin;\n\t\t\t\t\tthis.minuteMinOriginal = o.minuteMin;\n\t\t\t\t\tthis.secondMinOriginal = o.secondMin;\n\t\t\t\t\tthis.millisecMinOriginal = o.millisecMin;\n\t\t\t\t\tthis.microsecMinOriginal = o.microsecMin;\n\t\t\t\t}\n\n\t\t\t\tif (dp_inst.settings.timeOnly || minDateTimeDate.getTime() === dp_date.getTime()) {\n\t\t\t\t\tthis._defaults.hourMin = minDateTime.getHours();\n\t\t\t\t\tif (this.hour <= this._defaults.hourMin) {\n\t\t\t\t\t\tthis.hour = this._defaults.hourMin;\n\t\t\t\t\t\tthis._defaults.minuteMin = minDateTime.getMinutes();\n\t\t\t\t\t\tif (this.minute <= this._defaults.minuteMin) {\n\t\t\t\t\t\t\tthis.minute = this._defaults.minuteMin;\n\t\t\t\t\t\t\tthis._defaults.secondMin = minDateTime.getSeconds();\n\t\t\t\t\t\t\tif (this.second <= this._defaults.secondMin) {\n\t\t\t\t\t\t\t\tthis.second = this._defaults.secondMin;\n\t\t\t\t\t\t\t\tthis._defaults.millisecMin = minDateTime.getMilliseconds();\n\t\t\t\t\t\t\t\tif (this.millisec <= this._defaults.millisecMin) {\n\t\t\t\t\t\t\t\t\tthis.millisec = this._defaults.millisecMin;\n\t\t\t\t\t\t\t\t\tthis._defaults.microsecMin = minDateTime.getMicroseconds();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (this.microsec < this._defaults.microsecMin) {\n\t\t\t\t\t\t\t\t\t\tthis.microsec = this._defaults.microsecMin;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tthis._defaults.microsecMin = this.microsecMinOriginal;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._defaults.millisecMin = this.millisecMinOriginal;\n\t\t\t\t\t\t\t\tthis._defaults.microsecMin = this.microsecMinOriginal;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._defaults.secondMin = this.secondMinOriginal;\n\t\t\t\t\t\t\tthis._defaults.millisecMin = this.millisecMinOriginal;\n\t\t\t\t\t\t\tthis._defaults.microsecMin = this.microsecMinOriginal;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._defaults.minuteMin = this.minuteMinOriginal;\n\t\t\t\t\t\tthis._defaults.secondMin = this.secondMinOriginal;\n\t\t\t\t\t\tthis._defaults.millisecMin = this.millisecMinOriginal;\n\t\t\t\t\t\tthis._defaults.microsecMin = this.microsecMinOriginal;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis._defaults.hourMin = this.hourMinOriginal;\n\t\t\t\t\tthis._defaults.minuteMin = this.minuteMinOriginal;\n\t\t\t\t\tthis._defaults.secondMin = this.secondMinOriginal;\n\t\t\t\t\tthis._defaults.millisecMin = this.millisecMinOriginal;\n\t\t\t\t\tthis._defaults.microsecMin = this.microsecMinOriginal;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ($.datepicker._get(dp_inst, 'maxDateTime') !== null && $.datepicker._get(dp_inst, 'maxDateTime') !== undefined && dp_date) {\n\t\t\t\tvar maxDateTime = $.datepicker._get(dp_inst, 'maxDateTime'),\n\t\t\t\t\tmaxDateTimeDate = new Date(maxDateTime.getFullYear(), maxDateTime.getMonth(), maxDateTime.getDate(), 0, 0, 0, 0);\n\n\t\t\t\tif (this.hourMaxOriginal === null || this.minuteMaxOriginal === null || this.secondMaxOriginal === null || this.millisecMaxOriginal === null) {\n\t\t\t\t\tthis.hourMaxOriginal = o.hourMax;\n\t\t\t\t\tthis.minuteMaxOriginal = o.minuteMax;\n\t\t\t\t\tthis.secondMaxOriginal = o.secondMax;\n\t\t\t\t\tthis.millisecMaxOriginal = o.millisecMax;\n\t\t\t\t\tthis.microsecMaxOriginal = o.microsecMax;\n\t\t\t\t}\n\n\t\t\t\tif (dp_inst.settings.timeOnly || maxDateTimeDate.getTime() === dp_date.getTime()) {\n\t\t\t\t\tthis._defaults.hourMax = maxDateTime.getHours();\n\t\t\t\t\tif (this.hour >= this._defaults.hourMax) {\n\t\t\t\t\t\tthis.hour = this._defaults.hourMax;\n\t\t\t\t\t\tthis._defaults.minuteMax = maxDateTime.getMinutes();\n\t\t\t\t\t\tif (this.minute >= this._defaults.minuteMax) {\n\t\t\t\t\t\t\tthis.minute = this._defaults.minuteMax;\n\t\t\t\t\t\t\tthis._defaults.secondMax = maxDateTime.getSeconds();\n\t\t\t\t\t\t\tif (this.second >= this._defaults.secondMax) {\n\t\t\t\t\t\t\t\tthis.second = this._defaults.secondMax;\n\t\t\t\t\t\t\t\tthis._defaults.millisecMax = maxDateTime.getMilliseconds();\n\t\t\t\t\t\t\t\tif (this.millisec >= this._defaults.millisecMax) {\n\t\t\t\t\t\t\t\t\tthis.millisec = this._defaults.millisecMax;\n\t\t\t\t\t\t\t\t\tthis._defaults.microsecMax = maxDateTime.getMicroseconds();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (this.microsec > this._defaults.microsecMax) {\n\t\t\t\t\t\t\t\t\t\tthis.microsec = this._defaults.microsecMax;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tthis._defaults.microsecMax = this.microsecMaxOriginal;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._defaults.millisecMax = this.millisecMaxOriginal;\n\t\t\t\t\t\t\t\tthis._defaults.microsecMax = this.microsecMaxOriginal;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._defaults.secondMax = this.secondMaxOriginal;\n\t\t\t\t\t\t\tthis._defaults.millisecMax = this.millisecMaxOriginal;\n\t\t\t\t\t\t\tthis._defaults.microsecMax = this.microsecMaxOriginal;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._defaults.minuteMax = this.minuteMaxOriginal;\n\t\t\t\t\t\tthis._defaults.secondMax = this.secondMaxOriginal;\n\t\t\t\t\t\tthis._defaults.millisecMax = this.millisecMaxOriginal;\n\t\t\t\t\t\tthis._defaults.microsecMax = this.microsecMaxOriginal;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis._defaults.hourMax = this.hourMaxOriginal;\n\t\t\t\t\tthis._defaults.minuteMax = this.minuteMaxOriginal;\n\t\t\t\t\tthis._defaults.secondMax = this.secondMaxOriginal;\n\t\t\t\t\tthis._defaults.millisecMax = this.millisecMaxOriginal;\n\t\t\t\t\tthis._defaults.microsecMax = this.microsecMaxOriginal;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (dp_inst.settings.minTime!==null) {\n\t\t\t\tvar tempMinTime=new Date(\"01/01/1970 \" + dp_inst.settings.minTime);\n\t\t\t\tif (this.hour<tempMinTime.getHours()) {\n\t\t\t\t\tthis.hour=this._defaults.hourMin=tempMinTime.getHours();\n\t\t\t\t\tthis.minute=this._defaults.minuteMin=tempMinTime.getMinutes();\n\t\t\t\t} else if (this.hour===tempMinTime.getHours() && this.minute<tempMinTime.getMinutes()) {\n\t\t\t\t\tthis.minute=this._defaults.minuteMin=tempMinTime.getMinutes();\n\t\t\t\t} else {\n\t\t\t\t\tif (this._defaults.hourMin<tempMinTime.getHours()) {\n\t\t\t\t\t\tthis._defaults.hourMin=tempMinTime.getHours();\n\t\t\t\t\t\tthis._defaults.minuteMin=tempMinTime.getMinutes();\n\t\t\t\t\t} else if (this._defaults.hourMin===tempMinTime.getHours()===this.hour && this._defaults.minuteMin<tempMinTime.getMinutes()) {\n\t\t\t\t\t\tthis._defaults.minuteMin=tempMinTime.getMinutes();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._defaults.minuteMin=0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (dp_inst.settings.maxTime!==null) {\n\t\t\t\tvar tempMaxTime=new Date(\"01/01/1970 \" + dp_inst.settings.maxTime);\n\t\t\t\tif (this.hour>tempMaxTime.getHours()) {\n\t\t\t\t\tthis.hour=this._defaults.hourMax=tempMaxTime.getHours();\n\t\t\t\t\tthis.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();\n\t\t\t\t} else if (this.hour===tempMaxTime.getHours() && this.minute>tempMaxTime.getMinutes()) {\n\t\t\t\t\tthis.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();\n\t\t\t\t} else {\n\t\t\t\t\tif (this._defaults.hourMax>tempMaxTime.getHours()) {\n\t\t\t\t\t\tthis._defaults.hourMax=tempMaxTime.getHours();\n\t\t\t\t\t\tthis._defaults.minuteMax=tempMaxTime.getMinutes();\n\t\t\t\t\t} else if (this._defaults.hourMax===tempMaxTime.getHours()===this.hour && this._defaults.minuteMax>tempMaxTime.getMinutes()) {\n\t\t\t\t\t\tthis._defaults.minuteMax=tempMaxTime.getMinutes();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._defaults.minuteMax=59;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (adjustSliders !== undefined && adjustSliders === true) {\n\t\t\t\tvar hourMax = parseInt((this._defaults.hourMax - ((this._defaults.hourMax - this._defaults.hourMin) % this._defaults.stepHour)), 10),\n\t\t\t\t\tminMax = parseInt((this._defaults.minuteMax - ((this._defaults.minuteMax - this._defaults.minuteMin) % this._defaults.stepMinute)), 10),\n\t\t\t\t\tsecMax = parseInt((this._defaults.secondMax - ((this._defaults.secondMax - this._defaults.secondMin) % this._defaults.stepSecond)), 10),\n\t\t\t\t\tmillisecMax = parseInt((this._defaults.millisecMax - ((this._defaults.millisecMax - this._defaults.millisecMin) % this._defaults.stepMillisec)), 10),\n\t\t\t\t\tmicrosecMax = parseInt((this._defaults.microsecMax - ((this._defaults.microsecMax - this._defaults.microsecMin) % this._defaults.stepMicrosec)), 10);\n\n\t\t\t\tif (this.hour_slider) {\n\t\t\t\t\tthis.control.options(this, this.hour_slider, 'hour', { min: this._defaults.hourMin, max: hourMax, step: this._defaults.stepHour });\n\t\t\t\t\tthis.control.value(this, this.hour_slider, 'hour', this.hour - (this.hour % this._defaults.stepHour));\n\t\t\t\t}\n\t\t\t\tif (this.minute_slider) {\n\t\t\t\t\tthis.control.options(this, this.minute_slider, 'minute', { min: this._defaults.minuteMin, max: minMax, step: this._defaults.stepMinute });\n\t\t\t\t\tthis.control.value(this, this.minute_slider, 'minute', this.minute - (this.minute % this._defaults.stepMinute));\n\t\t\t\t}\n\t\t\t\tif (this.second_slider) {\n\t\t\t\t\tthis.control.options(this, this.second_slider, 'second', { min: this._defaults.secondMin, max: secMax, step: this._defaults.stepSecond });\n\t\t\t\t\tthis.control.value(this, this.second_slider, 'second', this.second - (this.second % this._defaults.stepSecond));\n\t\t\t\t}\n\t\t\t\tif (this.millisec_slider) {\n\t\t\t\t\tthis.control.options(this, this.millisec_slider, 'millisec', { min: this._defaults.millisecMin, max: millisecMax, step: this._defaults.stepMillisec });\n\t\t\t\t\tthis.control.value(this, this.millisec_slider, 'millisec', this.millisec - (this.millisec % this._defaults.stepMillisec));\n\t\t\t\t}\n\t\t\t\tif (this.microsec_slider) {\n\t\t\t\t\tthis.control.options(this, this.microsec_slider, 'microsec', { min: this._defaults.microsecMin, max: microsecMax, step: this._defaults.stepMicrosec });\n\t\t\t\t\tthis.control.value(this, this.microsec_slider, 'microsec', this.microsec - (this.microsec % this._defaults.stepMicrosec));\n\t\t\t\t}\n\t\t\t}\n\n\t\t},\n\n\t\t/*\n\t\t* when a slider moves, set the internal time...\n\t\t* on time change is also called when the time is updated in the text field\n\t\t*/\n\t\t_onTimeChange: function () {\n\t\t\tif (!this._defaults.showTimepicker) {\n                                return;\n\t\t\t}\n\t\t\tvar hour = (this.hour_slider) ? this.control.value(this, this.hour_slider, 'hour') : false,\n\t\t\t\tminute = (this.minute_slider) ? this.control.value(this, this.minute_slider, 'minute') : false,\n\t\t\t\tsecond = (this.second_slider) ? this.control.value(this, this.second_slider, 'second') : false,\n\t\t\t\tmillisec = (this.millisec_slider) ? this.control.value(this, this.millisec_slider, 'millisec') : false,\n\t\t\t\tmicrosec = (this.microsec_slider) ? this.control.value(this, this.microsec_slider, 'microsec') : false,\n\t\t\t\ttimezone = (this.timezone_select) ? this.timezone_select.val() : false,\n\t\t\t\to = this._defaults,\n\t\t\t\tpickerTimeFormat = o.pickerTimeFormat || o.timeFormat,\n\t\t\t\tpickerTimeSuffix = o.pickerTimeSuffix || o.timeSuffix;\n\n\t\t\tif (typeof(hour) === 'object') {\n\t\t\t\thour = false;\n\t\t\t}\n\t\t\tif (typeof(minute) === 'object') {\n\t\t\t\tminute = false;\n\t\t\t}\n\t\t\tif (typeof(second) === 'object') {\n\t\t\t\tsecond = false;\n\t\t\t}\n\t\t\tif (typeof(millisec) === 'object') {\n\t\t\t\tmillisec = false;\n\t\t\t}\n\t\t\tif (typeof(microsec) === 'object') {\n\t\t\t\tmicrosec = false;\n\t\t\t}\n\t\t\tif (typeof(timezone) === 'object') {\n\t\t\t\ttimezone = false;\n\t\t\t}\n\n\t\t\tif (hour !== false) {\n\t\t\t\thour = parseInt(hour, 10);\n\t\t\t}\n\t\t\tif (minute !== false) {\n\t\t\t\tminute = parseInt(minute, 10);\n\t\t\t}\n\t\t\tif (second !== false) {\n\t\t\t\tsecond = parseInt(second, 10);\n\t\t\t}\n\t\t\tif (millisec !== false) {\n\t\t\t\tmillisec = parseInt(millisec, 10);\n\t\t\t}\n\t\t\tif (microsec !== false) {\n\t\t\t\tmicrosec = parseInt(microsec, 10);\n\t\t\t}\n\t\t\tif (timezone !== false) {\n\t\t\t\ttimezone = timezone.toString();\n\t\t\t}\n\n\t\t\tvar ampm = o[hour < 12 ? 'amNames' : 'pmNames'][0];\n\n\t\t\t// If the update was done in the input field, the input field should not be updated.\n\t\t\t// If the update was done using the sliders, update the input field.\n\t\t\tvar hasChanged = (\n\t\t\t\t\t\thour !== parseInt(this.hour,10) || // sliders should all be numeric\n\t\t\t\t\t\tminute !== parseInt(this.minute,10) ||\n\t\t\t\t\t\tsecond !== parseInt(this.second,10) ||\n\t\t\t\t\t\tmillisec !== parseInt(this.millisec,10) ||\n\t\t\t\t\t\tmicrosec !== parseInt(this.microsec,10) ||\n\t\t\t\t\t\t(this.ampm.length > 0 && (hour < 12) !== ($.inArray(this.ampm.toUpperCase(), this.amNames) !== -1)) ||\n\t\t\t\t\t\t(this.timezone !== null && timezone !== this.timezone.toString()) // could be numeric or \"EST\" format, so use toString()\n\t\t\t\t\t);\n\n\t\t\tif (hasChanged) {\n\n\t\t\t\tif (hour !== false) {\n\t\t\t\t\tthis.hour = hour;\n\t\t\t\t}\n\t\t\t\tif (minute !== false) {\n\t\t\t\t\tthis.minute = minute;\n\t\t\t\t}\n\t\t\t\tif (second !== false) {\n\t\t\t\t\tthis.second = second;\n\t\t\t\t}\n\t\t\t\tif (millisec !== false) {\n\t\t\t\t\tthis.millisec = millisec;\n\t\t\t\t}\n\t\t\t\tif (microsec !== false) {\n\t\t\t\t\tthis.microsec = microsec;\n\t\t\t\t}\n\t\t\t\tif (timezone !== false) {\n\t\t\t\t\tthis.timezone = timezone;\n\t\t\t\t}\n\n\t\t\t\tif (!this.inst) {\n\t\t\t\t\tthis.inst = $.datepicker._getInst(this.$input[0]);\n\t\t\t\t}\n\n\t\t\t\tthis._limitMinMaxDateTime(this.inst, true);\n\t\t\t}\n\t\t\tif (this.support.ampm) {\n\t\t\t\tthis.ampm = ampm;\n\t\t\t}\n\n\t\t\t// Updates the time within the timepicker\n\t\t\tthis.formattedTime = $.datepicker.formatTime(o.timeFormat, this, o);\n\t\t\tif (this.$timeObj) {\n\t\t\t\tif (pickerTimeFormat === o.timeFormat) {\n\t\t\t\t\tthis.$timeObj.val(this.formattedTime + pickerTimeSuffix);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.$timeObj.val($.datepicker.formatTime(pickerTimeFormat, this, o) + pickerTimeSuffix);\n\t\t\t\t}\n\t\t\t\tif (this.$timeObj[0].setSelectionRange) {\n\t\t\t\t\tvar sPos = this.$timeObj[0].selectionStart;\n\t\t\t\t\tvar ePos = this.$timeObj[0].selectionEnd;\n\t\t\t\t\tthis.$timeObj[0].setSelectionRange(sPos, ePos);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.timeDefined = true;\n\t\t\tif (hasChanged) {\n\t\t\t\tthis._updateDateTime();\n\t\t\t\t//this.$input.focus(); // may automatically open the picker on setDate\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\t* call custom onSelect.\n\t\t* bind to sliders slidestop, and grid click.\n\t\t*/\n\t\t_onSelectHandler: function () {\n\t\t\tvar onSelect = this._defaults.onSelect || this.inst.settings.onSelect;\n\t\t\tvar inputEl = this.$input ? this.$input[0] : null;\n\t\t\tif (onSelect && inputEl) {\n\t\t\t\tonSelect.apply(inputEl, [this.formattedDateTime, this]);\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\t* update our input with the new date time..\n\t\t*/\n\t\t_updateDateTime: function (dp_inst) {\n\t\t\tdp_inst = this.inst || dp_inst;\n\t\t\tvar dtTmp = (dp_inst.currentYear > 0?\n\t\t\t\t\t\t\tnew Date(dp_inst.currentYear, dp_inst.currentMonth, dp_inst.currentDay) :\n\t\t\t\t\t\t\tnew Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),\n\t\t\t\tdt = $.datepicker._daylightSavingAdjust(dtTmp),\n\t\t\t\t//dt = $.datepicker._daylightSavingAdjust(new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),\n\t\t\t\t//dt = $.datepicker._daylightSavingAdjust(new Date(dp_inst.currentYear, dp_inst.currentMonth, dp_inst.currentDay)),\n\t\t\t\tdateFmt = $.datepicker._get(dp_inst, 'dateFormat'),\n\t\t\t\tformatCfg = $.datepicker._getFormatConfig(dp_inst),\n\t\t\t\ttimeAvailable = dt !== null && this.timeDefined;\n\t\t\tthis.formattedDate = $.datepicker.formatDate(dateFmt, (dt === null ? new Date() : dt), formatCfg);\n\t\t\tvar formattedDateTime = this.formattedDate;\n\n\t\t\t// if a slider was changed but datepicker doesn't have a value yet, set it\n\t\t\tif (dp_inst.lastVal === \"\") {\n                dp_inst.currentYear = dp_inst.selectedYear;\n                dp_inst.currentMonth = dp_inst.selectedMonth;\n                dp_inst.currentDay = dp_inst.selectedDay;\n            }\n\n\t\t\t/*\n\t\t\t* remove following lines to force every changes in date picker to change the input value\n\t\t\t* Bug descriptions: when an input field has a default value, and click on the field to pop up the date picker.\n\t\t\t* If the user manually empty the value in the input field, the date picker will never change selected value.\n\t\t\t*/\n\t\t\t//if (dp_inst.lastVal !== undefined && (dp_inst.lastVal.length > 0 && this.$input.val().length === 0)) {\n\t\t\t//\treturn;\n\t\t\t//}\n\n\t\t\tif (this._defaults.timeOnly === true && this._defaults.timeOnlyShowDate === false) {\n\t\t\t\tformattedDateTime = this.formattedTime;\n\t\t\t} else if ((this._defaults.timeOnly !== true && (this._defaults.alwaysSetTime || timeAvailable)) || (this._defaults.timeOnly === true && this._defaults.timeOnlyShowDate === true)) {\n\t\t\t\tformattedDateTime += this._defaults.separator + this.formattedTime + this._defaults.timeSuffix;\n\t\t\t}\n\n\t\t\tthis.formattedDateTime = formattedDateTime;\n\n\t\t\tif (!this._defaults.showTimepicker) {\n\t\t\t\tthis.$input.val(this.formattedDate);\n\t\t\t} else if (this.$altInput && this._defaults.timeOnly === false && this._defaults.altFieldTimeOnly === true) {\n\t\t\t\tthis.$altInput.val(this.formattedTime);\n\t\t\t\tthis.$input.val(this.formattedDate);\n\t\t\t} else if (this.$altInput) {\n\t\t\t\tthis.$input.val(formattedDateTime);\n\t\t\t\tvar altFormattedDateTime = '',\n\t\t\t\t\taltSeparator = this._defaults.altSeparator !== null ? this._defaults.altSeparator : this._defaults.separator,\n\t\t\t\t\taltTimeSuffix = this._defaults.altTimeSuffix !== null ? this._defaults.altTimeSuffix : this._defaults.timeSuffix;\n\n\t\t\t\tif (!this._defaults.timeOnly) {\n\t\t\t\t\tif (this._defaults.altFormat) {\n\t\t\t\t\t\taltFormattedDateTime = $.datepicker.formatDate(this._defaults.altFormat, (dt === null ? new Date() : dt), formatCfg);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\taltFormattedDateTime = this.formattedDate;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (altFormattedDateTime) {\n\t\t\t\t\t\taltFormattedDateTime += altSeparator;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this._defaults.altTimeFormat !== null) {\n\t\t\t\t\taltFormattedDateTime += $.datepicker.formatTime(this._defaults.altTimeFormat, this, this._defaults) + altTimeSuffix;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\taltFormattedDateTime += this.formattedTime + altTimeSuffix;\n\t\t\t\t}\n\t\t\t\tthis.$altInput.val(altFormattedDateTime);\n\t\t\t} else {\n\t\t\t\tthis.$input.val(formattedDateTime);\n\t\t\t}\n\n\t\t\tthis.$input.trigger(\"change\");\n\t\t},\n\n\t\t_onFocus: function () {\n\t\t\tif (!this.$input.val() && this._defaults.defaultValue) {\n\t\t\t\tthis.$input.val(this._defaults.defaultValue);\n\t\t\t\tvar inst = $.datepicker._getInst(this.$input.get(0)),\n\t\t\t\t\ttp_inst = $.datepicker._get(inst, 'timepicker');\n\t\t\t\tif (tp_inst) {\n\t\t\t\t\tif (tp_inst._defaults.timeOnly && (inst.input.val() !== inst.lastVal)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$.datepicker._updateDatepicker(inst);\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t$.timepicker.log(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\t* Small abstraction to control types\n\t\t* We can add more, just be sure to follow the pattern: create, options, value\n\t\t*/\n\t\t_controls: {\n\t\t\t// slider methods\n\t\t\tslider: {\n\t\t\t\tcreate: function (tp_inst, obj, unit, val, min, max, step) {\n\t\t\t\t\tvar rtl = tp_inst._defaults.isRTL; // if rtl go -60->0 instead of 0->60\n\t\t\t\t\treturn obj.prop('slide', null).slider({\n\t\t\t\t\t\torientation: \"horizontal\",\n\t\t\t\t\t\tvalue: rtl ? val * -1 : val,\n\t\t\t\t\t\tmin: rtl ? max * -1 : min,\n\t\t\t\t\t\tmax: rtl ? min * -1 : max,\n\t\t\t\t\t\tstep: step,\n\t\t\t\t\t\tslide: function (event, ui) {\n\t\t\t\t\t\t\ttp_inst.control.value(tp_inst, $(this), unit, rtl ? ui.value * -1 : ui.value);\n\t\t\t\t\t\t\ttp_inst._onTimeChange();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstop: function (event, ui) {\n\t\t\t\t\t\t\ttp_inst._onSelectHandler();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\toptions: function (tp_inst, obj, unit, opts, val) {\n\t\t\t\t\tif (tp_inst._defaults.isRTL) {\n\t\t\t\t\t\tif (typeof(opts) === 'string') {\n\t\t\t\t\t\t\tif (opts === 'min' || opts === 'max') {\n\t\t\t\t\t\t\t\tif (val !== undefined) {\n\t\t\t\t\t\t\t\t\treturn obj.slider(opts, val * -1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn Math.abs(obj.slider(opts));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn obj.slider(opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar min = opts.min,\n\t\t\t\t\t\t\tmax = opts.max;\n\t\t\t\t\t\topts.min = opts.max = null;\n\t\t\t\t\t\tif (min !== undefined) {\n\t\t\t\t\t\t\topts.max = min * -1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (max !== undefined) {\n\t\t\t\t\t\t\topts.min = max * -1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn obj.slider(opts);\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof(opts) === 'string' && val !== undefined) {\n\t\t\t\t\t\treturn obj.slider(opts, val);\n\t\t\t\t\t}\n\t\t\t\t\treturn obj.slider(opts);\n\t\t\t\t},\n\t\t\t\tvalue: function (tp_inst, obj, unit, val) {\n\t\t\t\t\tif (tp_inst._defaults.isRTL) {\n\t\t\t\t\t\tif (val !== undefined) {\n\t\t\t\t\t\t\treturn obj.slider('value', val * -1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn Math.abs(obj.slider('value'));\n\t\t\t\t\t}\n\t\t\t\t\tif (val !== undefined) {\n\t\t\t\t\t\treturn obj.slider('value', val);\n\t\t\t\t\t}\n\t\t\t\t\treturn obj.slider('value');\n\t\t\t\t}\n\t\t\t},\n\t\t\t// select methods\n\t\t\tselect: {\n\t\t\t\tcreate: function (tp_inst, obj, unit, val, min, max, step) {\n\t\t\t\t\tvar sel = '<select class=\"ui-timepicker-select ui-state-default ui-corner-all\" data-unit=\"' + unit + '\" data-min=\"' + min + '\" data-max=\"' + max + '\" data-step=\"' + step + '\">',\n\t\t\t\t\t\tformat = tp_inst._defaults.pickerTimeFormat || tp_inst._defaults.timeFormat;\n\n\t\t\t\t\tfor (var i = min; i <= max; i += step) {\n\t\t\t\t\t\tsel += '<option value=\"' + i + '\"' + (i === val ? ' selected' : '') + '>';\n\t\t\t\t\t\tif (unit === 'hour') {\n\t\t\t\t\t\t\tsel += $.datepicker.formatTime($.trim(format.replace(/[^ht ]/ig, '')), {hour: i}, tp_inst._defaults);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (unit === 'millisec' || unit === 'microsec' || i >= 10) { sel += i; }\n\t\t\t\t\t\telse {sel += '0' + i.toString(); }\n\t\t\t\t\t\tsel += '</option>';\n\t\t\t\t\t}\n\t\t\t\t\tsel += '</select>';\n\n\t\t\t\t\tobj.children('select').remove();\n\n\t\t\t\t\t$(sel).appendTo(obj).change(function (e) {\n\t\t\t\t\t\ttp_inst._onTimeChange();\n\t\t\t\t\t\ttp_inst._onSelectHandler();\n\t\t\t\t\t\ttp_inst._afterInject();\n\t\t\t\t\t});\n\n\t\t\t\t\treturn obj;\n\t\t\t\t},\n\t\t\t\toptions: function (tp_inst, obj, unit, opts, val) {\n\t\t\t\t\tvar o = {},\n\t\t\t\t\t\t$t = obj.children('select');\n\t\t\t\t\tif (typeof(opts) === 'string') {\n\t\t\t\t\t\tif (val === undefined) {\n\t\t\t\t\t\t\treturn $t.data(opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\to[opts] = val;\n\t\t\t\t\t}\n\t\t\t\t\telse { o = opts; }\n\t\t\t\t\treturn 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'));\n\t\t\t\t},\n\t\t\t\tvalue: function (tp_inst, obj, unit, val) {\n\t\t\t\t\tvar $t = obj.children('select');\n\t\t\t\t\tif (val !== undefined) {\n\t\t\t\t\t\treturn $t.val(val);\n\t\t\t\t\t}\n\t\t\t\t\treturn $t.val();\n\t\t\t\t}\n\t\t\t}\n\t\t} // end _controls\n\n\t});\n\n\t$.fn.extend({\n\t\t/*\n\t\t* shorthand just to use timepicker.\n\t\t*/\n\t\ttimepicker: function (o) {\n\t\t\to = o || {};\n\t\t\tvar tmp_args = Array.prototype.slice.call(arguments);\n\n\t\t\tif (typeof o === 'object') {\n\t\t\t\ttmp_args[0] = $.extend(o, {\n\t\t\t\t\ttimeOnly: true\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn $(this).each(function () {\n\t\t\t\t$.fn.datetimepicker.apply($(this), tmp_args);\n\t\t\t});\n\t\t},\n\n\t\t/*\n\t\t* extend timepicker to datepicker\n\t\t*/\n\t\tdatetimepicker: function (o) {\n\t\t\to = o || {};\n\t\t\tvar tmp_args = arguments;\n\n\t\t\tif (typeof(o) === 'string') {\n\t\t\t\tif (o === 'getDate'  || (o === 'option' && tmp_args.length === 2 && typeof (tmp_args[1]) === 'string')) {\n\t\t\t\t\treturn $.fn.datepicker.apply($(this[0]), tmp_args);\n\t\t\t\t} else {\n\t\t\t\t\treturn this.each(function () {\n\t\t\t\t\t\tvar $t = $(this);\n\t\t\t\t\t\t$t.datepicker.apply($t, tmp_args);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn this.each(function () {\n\t\t\t\t\tvar $t = $(this);\n\t\t\t\t\t$t.datepicker($.timepicker._newInst($t, o)._defaults);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\t/*\n\t* Public Utility to parse date and time\n\t*/\n\t$.datepicker.parseDateTime = function (dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings) {\n\t\tvar parseRes = parseDateTimeInternal(dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings);\n\t\tif (parseRes.timeObj) {\n\t\t\tvar t = parseRes.timeObj;\n\t\t\tparseRes.date.setHours(t.hour, t.minute, t.second, t.millisec);\n\t\t\tparseRes.date.setMicroseconds(t.microsec);\n\t\t}\n\n\t\treturn parseRes.date;\n\t};\n\n\t/*\n\t* Public utility to parse time\n\t*/\n\t$.datepicker.parseTime = function (timeFormat, timeString, options) {\n\t\tvar o = extendRemove(extendRemove({}, $.timepicker._defaults), options || {}),\n\t\t\tiso8601 = (timeFormat.replace(/\\'.*?\\'/g, '').indexOf('Z') !== -1);\n\n\t\t// Strict parse requires the timeString to match the timeFormat exactly\n\t\tvar strictParse = function (f, s, o) {\n\n\t\t\t// pattern for standard and localized AM/PM markers\n\t\t\tvar getPatternAmpm = function (amNames, pmNames) {\n\t\t\t\tvar markers = [];\n\t\t\t\tif (amNames) {\n\t\t\t\t\t$.merge(markers, amNames);\n\t\t\t\t}\n\t\t\t\tif (pmNames) {\n\t\t\t\t\t$.merge(markers, pmNames);\n\t\t\t\t}\n\t\t\t\tmarkers = $.map(markers, function (val) {\n\t\t\t\t\treturn val.replace(/[.*+?|()\\[\\]{}\\\\]/g, '\\\\$&');\n\t\t\t\t});\n\t\t\t\treturn '(' + markers.join('|') + ')?';\n\t\t\t};\n\n\t\t\t// figure out position of time elements.. cause js cant do named captures\n\t\t\tvar getFormatPositions = function (timeFormat) {\n\t\t\t\tvar finds = timeFormat.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|c{1}|t{1,2}|z|'.*?')/g),\n\t\t\t\t\torders = {\n\t\t\t\t\t\th: -1,\n\t\t\t\t\t\tm: -1,\n\t\t\t\t\t\ts: -1,\n\t\t\t\t\t\tl: -1,\n\t\t\t\t\t\tc: -1,\n\t\t\t\t\t\tt: -1,\n\t\t\t\t\t\tz: -1\n\t\t\t\t\t};\n\n\t\t\t\tif (finds) {\n\t\t\t\t\tfor (var i = 0; i < finds.length; i++) {\n\t\t\t\t\t\tif (orders[finds[i].toString().charAt(0)] === -1) {\n\t\t\t\t\t\t\torders[finds[i].toString().charAt(0)] = i + 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn orders;\n\t\t\t};\n\n\t\t\tvar regstr = '^' + f.toString()\n\t\t\t\t\t.replace(/([hH]{1,2}|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g, function (match) {\n\t\t\t\t\t\t\tvar ml = match.length;\n\t\t\t\t\t\t\tswitch (match.charAt(0).toLowerCase()) {\n\t\t\t\t\t\t\tcase 'h':\n\t\t\t\t\t\t\t\treturn ml === 1 ? '(\\\\d?\\\\d)' : '(\\\\d{' + ml + '})';\n\t\t\t\t\t\t\tcase 'm':\n\t\t\t\t\t\t\t\treturn ml === 1 ? '(\\\\d?\\\\d)' : '(\\\\d{' + ml + '})';\n\t\t\t\t\t\t\tcase 's':\n\t\t\t\t\t\t\t\treturn ml === 1 ? '(\\\\d?\\\\d)' : '(\\\\d{' + ml + '})';\n\t\t\t\t\t\t\tcase 'l':\n\t\t\t\t\t\t\t\treturn '(\\\\d?\\\\d?\\\\d)';\n\t\t\t\t\t\t\tcase 'c':\n\t\t\t\t\t\t\t\treturn '(\\\\d?\\\\d?\\\\d)';\n\t\t\t\t\t\t\tcase 'z':\n\t\t\t\t\t\t\t\treturn '(z|[-+]\\\\d\\\\d:?\\\\d\\\\d|\\\\S+)?';\n\t\t\t\t\t\t\tcase 't':\n\t\t\t\t\t\t\t\treturn getPatternAmpm(o.amNames, o.pmNames);\n\t\t\t\t\t\t\tdefault:    // literal escaped in quotes\n\t\t\t\t\t\t\t\treturn '(' + match.replace(/\\'/g, \"\").replace(/(\\.|\\$|\\^|\\\\|\\/|\\(|\\)|\\[|\\]|\\?|\\+|\\*)/g, function (m) { return \"\\\\\" + m; }) + ')?';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t.replace(/\\s/g, '\\\\s?') +\n\t\t\t\t\to.timeSuffix + '$',\n\t\t\t\torder = getFormatPositions(f),\n\t\t\t\tampm = '',\n\t\t\t\ttreg;\n\n\t\t\ttreg = s.match(new RegExp(regstr, 'i'));\n\n\t\t\tvar resTime = {\n\t\t\t\thour: 0,\n\t\t\t\tminute: 0,\n\t\t\t\tsecond: 0,\n\t\t\t\tmillisec: 0,\n\t\t\t\tmicrosec: 0\n\t\t\t};\n\n\t\t\tif (treg) {\n\t\t\t\tif (order.t !== -1) {\n\t\t\t\t\tif (treg[order.t] === undefined || treg[order.t].length === 0) {\n\t\t\t\t\t\tampm = '';\n\t\t\t\t\t\tresTime.ampm = '';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tampm = $.inArray(treg[order.t].toUpperCase(), $.map(o.amNames, function (x,i) { return x.toUpperCase(); })) !== -1 ? 'AM' : 'PM';\n\t\t\t\t\t\tresTime.ampm = o[ampm === 'AM' ? 'amNames' : 'pmNames'][0];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (order.h !== -1) {\n\t\t\t\t\tif (ampm === 'AM' && treg[order.h] === '12') {\n\t\t\t\t\t\tresTime.hour = 0; // 12am = 0 hour\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (ampm === 'PM' && treg[order.h] !== '12') {\n\t\t\t\t\t\t\tresTime.hour = parseInt(treg[order.h], 10) + 12; // 12pm = 12 hour, any other pm = hour + 12\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresTime.hour = Number(treg[order.h]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (order.m !== -1) {\n\t\t\t\t\tresTime.minute = Number(treg[order.m]);\n\t\t\t\t}\n\t\t\t\tif (order.s !== -1) {\n\t\t\t\t\tresTime.second = Number(treg[order.s]);\n\t\t\t\t}\n\t\t\t\tif (order.l !== -1) {\n\t\t\t\t\tresTime.millisec = Number(treg[order.l]);\n\t\t\t\t}\n\t\t\t\tif (order.c !== -1) {\n\t\t\t\t\tresTime.microsec = Number(treg[order.c]);\n\t\t\t\t}\n\t\t\t\tif (order.z !== -1 && treg[order.z] !== undefined) {\n\t\t\t\t\tresTime.timezone = $.timepicker.timezoneOffsetNumber(treg[order.z]);\n\t\t\t\t}\n\n\n\t\t\t\treturn resTime;\n\t\t\t}\n\t\t\treturn false;\n\t\t};// end strictParse\n\n\t\t// First try JS Date, if that fails, use strictParse\n\t\tvar looseParse = function (f, s, o) {\n\t\t\ttry {\n\t\t\t\tvar d = new Date('2012-01-01 ' + s);\n\t\t\t\tif (isNaN(d.getTime())) {\n\t\t\t\t\td = new Date('2012-01-01T' + s);\n\t\t\t\t\tif (isNaN(d.getTime())) {\n\t\t\t\t\t\td = new Date('01/01/2012 ' + s);\n\t\t\t\t\t\tif (isNaN(d.getTime())) {\n\t\t\t\t\t\t\tthrow \"Unable to parse time with native Date: \" + s;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\thour: d.getHours(),\n\t\t\t\t\tminute: d.getMinutes(),\n\t\t\t\t\tsecond: d.getSeconds(),\n\t\t\t\t\tmillisec: d.getMilliseconds(),\n\t\t\t\t\tmicrosec: d.getMicroseconds(),\n\t\t\t\t\ttimezone: d.getTimezoneOffset() * -1\n\t\t\t\t};\n\t\t\t}\n\t\t\tcatch (err) {\n\t\t\t\ttry {\n\t\t\t\t\treturn strictParse(f, s, o);\n\t\t\t\t}\n\t\t\t\tcatch (err2) {\n\t\t\t\t\t$.timepicker.log(\"Unable to parse \\ntimeString: \" + s + \"\\ntimeFormat: \" + f);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}; // end looseParse\n\n\t\tif (typeof o.parse === \"function\") {\n\t\t\treturn o.parse(timeFormat, timeString, o);\n\t\t}\n\t\tif (o.parse === 'loose') {\n\t\t\treturn looseParse(timeFormat, timeString, o);\n\t\t}\n\t\treturn strictParse(timeFormat, timeString, o);\n\t};\n\n\t/**\n\t * Public utility to format the time\n\t * @param {string} format format of the time\n\t * @param {Object} time Object not a Date for timezones\n\t * @param {Object} [options] essentially the regional[].. amNames, pmNames, ampm\n\t * @returns {string} the formatted time\n\t */\n\t$.datepicker.formatTime = function (format, time, options) {\n\t\toptions = options || {};\n\t\toptions = $.extend({}, $.timepicker._defaults, options);\n\t\ttime = $.extend({\n\t\t\thour: 0,\n\t\t\tminute: 0,\n\t\t\tsecond: 0,\n\t\t\tmillisec: 0,\n\t\t\tmicrosec: 0,\n\t\t\ttimezone: null\n\t\t}, time);\n\n\t\tvar tmptime = format,\n\t\t\tampmName = options.amNames[0],\n\t\t\thour = parseInt(time.hour, 10);\n\n\t\tif (hour > 11) {\n\t\t\tampmName = options.pmNames[0];\n\t\t}\n\n\t\ttmptime = tmptime.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g, function (match) {\n\t\t\tswitch (match) {\n\t\t\tcase 'HH':\n\t\t\t\treturn ('0' + hour).slice(-2);\n\t\t\tcase 'H':\n\t\t\t\treturn hour;\n\t\t\tcase 'hh':\n\t\t\t\treturn ('0' + convert24to12(hour)).slice(-2);\n\t\t\tcase 'h':\n\t\t\t\treturn convert24to12(hour);\n\t\t\tcase 'mm':\n\t\t\t\treturn ('0' + time.minute).slice(-2);\n\t\t\tcase 'm':\n\t\t\t\treturn time.minute;\n\t\t\tcase 'ss':\n\t\t\t\treturn ('0' + time.second).slice(-2);\n\t\t\tcase 's':\n\t\t\t\treturn time.second;\n\t\t\tcase 'l':\n\t\t\t\treturn ('00' + time.millisec).slice(-3);\n\t\t\tcase 'c':\n\t\t\t\treturn ('00' + time.microsec).slice(-3);\n\t\t\tcase 'z':\n\t\t\t\treturn $.timepicker.timezoneOffsetString(time.timezone === null ? options.timezone : time.timezone, false);\n\t\t\tcase 'Z':\n\t\t\t\treturn $.timepicker.timezoneOffsetString(time.timezone === null ? options.timezone : time.timezone, true);\n\t\t\tcase 'T':\n\t\t\t\treturn ampmName.charAt(0).toUpperCase();\n\t\t\tcase 'TT':\n\t\t\t\treturn ampmName.toUpperCase();\n\t\t\tcase 't':\n\t\t\t\treturn ampmName.charAt(0).toLowerCase();\n\t\t\tcase 'tt':\n\t\t\t\treturn ampmName.toLowerCase();\n\t\t\tdefault:\n\t\t\t\treturn match.replace(/'/g, \"\");\n\t\t\t}\n\t\t});\n\n\t\treturn tmptime;\n\t};\n\n\t/*\n\t* the bad hack :/ override datepicker so it doesn't close on select\n\t// inspired: http://stackoverflow.com/questions/1252512/jquery-datepicker-prevent-closing-picker-when-clicking-a-date/1762378#1762378\n\t*/\n\t$.datepicker._base_selectDate = $.datepicker._selectDate;\n\t$.datepicker._selectDate = function (id, dateStr) {\n\t\tvar inst = this._getInst($(id)[0]),\n\t\t\ttp_inst = this._get(inst, 'timepicker'),\n\t\t\twas_inline;\n\n\t\tif (tp_inst && inst.settings.showTimepicker) {\n\t\t\ttp_inst._limitMinMaxDateTime(inst, true);\n\t\t\twas_inline = inst.inline;\n\t\t\tinst.inline = inst.stay_open = true;\n\t\t\t//This way the onSelect handler called from calendarpicker get the full dateTime\n\t\t\tthis._base_selectDate(id, dateStr);\n\t\t\tinst.inline = was_inline;\n\t\t\tinst.stay_open = false;\n\t\t\tthis._notifyChange(inst);\n\t\t\tthis._updateDatepicker(inst);\n\t\t} else {\n\t\t\tthis._base_selectDate(id, dateStr);\n\t\t}\n\t};\n\n\t/*\n\t* second bad hack :/ override datepicker so it triggers an event when changing the input field\n\t* and does not redraw the datepicker on every selectDate event\n\t*/\n\t$.datepicker._base_updateDatepicker = $.datepicker._updateDatepicker;\n\t$.datepicker._updateDatepicker = function (inst) {\n\n\t\t// don't popup the datepicker if there is another instance already opened\n\t\tvar input = inst.input[0];\n\t\tif ($.datepicker._curInst && $.datepicker._curInst !== inst && $.datepicker._datepickerShowing && $.datepicker._lastInput !== input) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof(inst.stay_open) !== 'boolean' || inst.stay_open === false) {\n\n\t\t\tthis._base_updateDatepicker(inst);\n\n\t\t\t// Reload the time control when changing something in the input text field.\n\t\t\tvar tp_inst = this._get(inst, 'timepicker');\n\t\t\tif (tp_inst) {\n\t\t\t\ttp_inst._addTimePicker(inst);\n\t\t\t}\n\t\t}\n\t};\n\n\t/*\n\t* third bad hack :/ override datepicker so it allows spaces and colon in the input field\n\t*/\n\t$.datepicker._base_doKeyPress = $.datepicker._doKeyPress;\n\t$.datepicker._doKeyPress = function (event) {\n\t\tvar inst = $.datepicker._getInst(event.target),\n\t\t\ttp_inst = $.datepicker._get(inst, 'timepicker');\n\n\t\tif (tp_inst) {\n\t\t\tif ($.datepicker._get(inst, 'constrainInput')) {\n\t\t\t\tvar ampm = tp_inst.support.ampm,\n\t\t\t\t\ttz = tp_inst._defaults.showTimezone !== null ? tp_inst._defaults.showTimezone : tp_inst.support.timezone,\n\t\t\t\t\tdateChars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')),\n\t\t\t\t\tdatetimeChars = tp_inst._defaults.timeFormat.toString()\n\t\t\t\t\t\t\t\t\t\t\t.replace(/[hms]/g, '')\n\t\t\t\t\t\t\t\t\t\t\t.replace(/TT/g, ampm ? 'APM' : '')\n\t\t\t\t\t\t\t\t\t\t\t.replace(/Tt/g, ampm ? 'AaPpMm' : '')\n\t\t\t\t\t\t\t\t\t\t\t.replace(/tT/g, ampm ? 'AaPpMm' : '')\n\t\t\t\t\t\t\t\t\t\t\t.replace(/T/g, ampm ? 'AP' : '')\n\t\t\t\t\t\t\t\t\t\t\t.replace(/tt/g, ampm ? 'apm' : '')\n\t\t\t\t\t\t\t\t\t\t\t.replace(/t/g, ampm ? 'ap' : '') +\n\t\t\t\t\t\t\t\t\t\t\t\" \" + tp_inst._defaults.separator +\n\t\t\t\t\t\t\t\t\t\t\ttp_inst._defaults.timeSuffix +\n\t\t\t\t\t\t\t\t\t\t\t(tz ? tp_inst._defaults.timezoneList.join('') : '') +\n\t\t\t\t\t\t\t\t\t\t\t(tp_inst._defaults.amNames.join('')) + (tp_inst._defaults.pmNames.join('')) +\n\t\t\t\t\t\t\t\t\t\t\tdateChars,\n\t\t\t\t\tchr = String.fromCharCode(event.charCode === undefined ? event.keyCode : event.charCode);\n\t\t\t\treturn event.ctrlKey || (chr < ' ' || !dateChars || datetimeChars.indexOf(chr) > -1);\n\t\t\t}\n\t\t}\n\n\t\treturn $.datepicker._base_doKeyPress(event);\n\t};\n\n\t/*\n\t* Fourth bad hack :/ override _updateAlternate function used in inline mode to init altField\n\t* Update any alternate field to synchronise with the main field.\n\t*/\n\t$.datepicker._base_updateAlternate = $.datepicker._updateAlternate;\n\t$.datepicker._updateAlternate = function (inst) {\n\t\tvar tp_inst = this._get(inst, 'timepicker');\n\t\tif (tp_inst) {\n\t\t\tvar altField = tp_inst._defaults.altField;\n\t\t\tif (altField) { // update alternate field too\n\t\t\t\tvar altFormat = tp_inst._defaults.altFormat || tp_inst._defaults.dateFormat,\n\t\t\t\t\tdate = this._getDate(inst),\n\t\t\t\t\tformatCfg = $.datepicker._getFormatConfig(inst),\n\t\t\t\t\taltFormattedDateTime = '',\n\t\t\t\t\taltSeparator = tp_inst._defaults.altSeparator ? tp_inst._defaults.altSeparator : tp_inst._defaults.separator,\n\t\t\t\t\taltTimeSuffix = tp_inst._defaults.altTimeSuffix ? tp_inst._defaults.altTimeSuffix : tp_inst._defaults.timeSuffix,\n\t\t\t\t\taltTimeFormat = tp_inst._defaults.altTimeFormat !== null ? tp_inst._defaults.altTimeFormat : tp_inst._defaults.timeFormat;\n\n\t\t\t\taltFormattedDateTime += $.datepicker.formatTime(altTimeFormat, tp_inst, tp_inst._defaults) + altTimeSuffix;\n\t\t\t\tif (!tp_inst._defaults.timeOnly && !tp_inst._defaults.altFieldTimeOnly && date !== null) {\n\t\t\t\t\tif (tp_inst._defaults.altFormat) {\n\t\t\t\t\t\taltFormattedDateTime = $.datepicker.formatDate(tp_inst._defaults.altFormat, date, formatCfg) + altSeparator + altFormattedDateTime;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\taltFormattedDateTime = tp_inst.formattedDate + altSeparator + altFormattedDateTime;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$(altField).val( inst.input.val() ? altFormattedDateTime : \"\");\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t$.datepicker._base_updateAlternate(inst);\n\t\t}\n\t};\n\n\t/*\n\t* Override key up event to sync manual input changes.\n\t*/\n\t$.datepicker._base_doKeyUp = $.datepicker._doKeyUp;\n\t$.datepicker._doKeyUp = function (event) {\n\t\tvar inst = $.datepicker._getInst(event.target),\n\t\t\ttp_inst = $.datepicker._get(inst, 'timepicker');\n\n\t\tif (tp_inst) {\n\t\t\tif (tp_inst._defaults.timeOnly && (inst.input.val() !== inst.lastVal)) {\n\t\t\t\ttry {\n\t\t\t\t\t$.datepicker._updateDatepicker(inst);\n\t\t\t\t} catch (err) {\n\t\t\t\t\t$.timepicker.log(err);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn $.datepicker._base_doKeyUp(event);\n\t};\n\n\t/*\n\t* override \"Today\" button to also grab the time and set it to input field.\n\t*/\n\t$.datepicker._base_gotoToday = $.datepicker._gotoToday;\n\t$.datepicker._gotoToday = function (id) {\n\t\tvar inst = this._getInst($(id)[0]);\n\t\tthis._base_gotoToday(id);\n\t\tvar tp_inst = this._get(inst, 'timepicker');\n\t\tif (!tp_inst) {\n\t\t  return;\n\t\t}\n\n\t\tvar tzoffset = $.timepicker.timezoneOffsetNumber(tp_inst.timezone);\n\t\tvar now = new Date();\n\t\tnow.setMinutes(now.getMinutes() + now.getTimezoneOffset() + parseInt(tzoffset, 10));\n\t\tthis._setTime(inst, now);\n\t\tthis._setDate(inst, now);\n\t\ttp_inst._onSelectHandler();\n\t};\n\n\t/*\n\t* Disable & enable the Time in the datetimepicker\n\t*/\n\t$.datepicker._disableTimepickerDatepicker = function (target) {\n\t\tvar inst = this._getInst(target);\n\t\tif (!inst) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tp_inst = this._get(inst, 'timepicker');\n\t\t$(target).datepicker('getDate'); // Init selected[Year|Month|Day]\n\t\tif (tp_inst) {\n\t\t\tinst.settings.showTimepicker = false;\n\t\t\ttp_inst._defaults.showTimepicker = false;\n\t\t\ttp_inst._updateDateTime(inst);\n\t\t}\n\t};\n\n\t$.datepicker._enableTimepickerDatepicker = function (target) {\n\t\tvar inst = this._getInst(target);\n\t\tif (!inst) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tp_inst = this._get(inst, 'timepicker');\n\t\t$(target).datepicker('getDate'); // Init selected[Year|Month|Day]\n\t\tif (tp_inst) {\n\t\t\tinst.settings.showTimepicker = true;\n\t\t\ttp_inst._defaults.showTimepicker = true;\n\t\t\ttp_inst._addTimePicker(inst); // Could be disabled on page load\n\t\t\ttp_inst._updateDateTime(inst);\n\t\t}\n\t};\n\n\t/*\n\t* Create our own set time function\n\t*/\n\t$.datepicker._setTime = function (inst, date) {\n\t\tvar tp_inst = this._get(inst, 'timepicker');\n\t\tif (tp_inst) {\n\t\t\tvar defaults = tp_inst._defaults;\n\n\t\t\t// calling _setTime with no date sets time to defaults\n\t\t\ttp_inst.hour = date ? date.getHours() : defaults.hour;\n\t\t\ttp_inst.minute = date ? date.getMinutes() : defaults.minute;\n\t\t\ttp_inst.second = date ? date.getSeconds() : defaults.second;\n\t\t\ttp_inst.millisec = date ? date.getMilliseconds() : defaults.millisec;\n\t\t\ttp_inst.microsec = date ? date.getMicroseconds() : defaults.microsec;\n\n\t\t\t//check if within min/max times..\n\t\t\ttp_inst._limitMinMaxDateTime(inst, true);\n\n\t\t\ttp_inst._onTimeChange();\n\t\t\ttp_inst._updateDateTime(inst);\n\t\t}\n\t};\n\n\t/*\n\t* Create new public method to set only time, callable as $().datepicker('setTime', date)\n\t*/\n\t$.datepicker._setTimeDatepicker = function (target, date, withDate) {\n\t\tvar inst = this._getInst(target);\n\t\tif (!inst) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tp_inst = this._get(inst, 'timepicker');\n\n\t\tif (tp_inst) {\n\t\t\tthis._setDateFromField(inst);\n\t\t\tvar tp_date;\n\t\t\tif (date) {\n\t\t\t\tif (typeof date === \"string\") {\n\t\t\t\t\ttp_inst._parseTime(date, withDate);\n\t\t\t\t\ttp_date = new Date();\n\t\t\t\t\ttp_date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);\n\t\t\t\t\ttp_date.setMicroseconds(tp_inst.microsec);\n\t\t\t\t} else {\n\t\t\t\t\ttp_date = new Date(date.getTime());\n\t\t\t\t\ttp_date.setMicroseconds(date.getMicroseconds());\n\t\t\t\t}\n\t\t\t\tif (tp_date.toString() === 'Invalid Date') {\n\t\t\t\t\ttp_date = undefined;\n\t\t\t\t}\n\t\t\t\tthis._setTime(inst, tp_date);\n\t\t\t}\n\t\t}\n\n\t};\n\n\t/*\n\t* override setDate() to allow setting time too within Date object\n\t*/\n\t$.datepicker._base_setDateDatepicker = $.datepicker._setDateDatepicker;\n\t$.datepicker._setDateDatepicker = function (target, _date) {\n\t\tvar inst = this._getInst(target);\n\t\tvar date = _date;\n\t\tif (!inst) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof(_date) === 'string') {\n\t\t\tdate = new Date(_date);\n\t\t\tif (!date.getTime()) {\n\t\t\t\tthis._base_setDateDatepicker.apply(this, arguments);\n\t\t\t\tdate = $(target).datepicker('getDate');\n\t\t\t}\n\t\t}\n\n\t\tvar tp_inst = this._get(inst, 'timepicker');\n\t\tvar tp_date;\n\t\tif (date instanceof Date) {\n\t\t\ttp_date = new Date(date.getTime());\n\t\t\ttp_date.setMicroseconds(date.getMicroseconds());\n\t\t} else {\n\t\t\ttp_date = date;\n\t\t}\n\n\t\t// This is important if you are using the timezone option, javascript's Date\n\t\t// object will only return the timezone offset for the current locale, so we\n\t\t// adjust it accordingly.  If not using timezone option this won't matter..\n\t\t// If a timezone is different in tp, keep the timezone as is\n\t\tif (tp_inst && tp_date) {\n\t\t\t// look out for DST if tz wasn't specified\n\t\t\tif (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {\n\t\t\t\ttp_inst.timezone = tp_date.getTimezoneOffset() * -1;\n\t\t\t}\n\t\t\tdate = $.timepicker.timezoneAdjust(date, $.timepicker.timezoneOffsetString(-date.getTimezoneOffset()), tp_inst.timezone);\n\t\t\ttp_date = $.timepicker.timezoneAdjust(tp_date, $.timepicker.timezoneOffsetString(-tp_date.getTimezoneOffset()), tp_inst.timezone);\n\t\t}\n\n\t\tthis._updateDatepicker(inst);\n\t\tthis._base_setDateDatepicker.apply(this, arguments);\n\t\tthis._setTimeDatepicker(target, tp_date, true);\n\t};\n\n\t/*\n\t* override getDate() to allow getting time too within Date object\n\t*/\n\t$.datepicker._base_getDateDatepicker = $.datepicker._getDateDatepicker;\n\t$.datepicker._getDateDatepicker = function (target, noDefault) {\n\t\tvar inst = this._getInst(target);\n\t\tif (!inst) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tp_inst = this._get(inst, 'timepicker');\n\n\t\tif (tp_inst) {\n\t\t\t// if it hasn't yet been defined, grab from field\n\t\t\tif (inst.lastVal === undefined) {\n\t\t\t\tthis._setDateFromField(inst, noDefault);\n\t\t\t}\n\n\t\t\tvar date = this._getDate(inst);\n\n\t\t\tvar currDT = null;\n\n\t\t\tif (tp_inst.$altInput && tp_inst._defaults.altFieldTimeOnly) {\n\t\t\t\tcurrDT = tp_inst.$input.val() + ' ' + tp_inst.$altInput.val();\n\t\t\t}\n\t\t\telse if (tp_inst.$input.get(0).tagName !== 'INPUT' && tp_inst.$altInput) {\n\t\t\t\t/**\n\t\t\t\t * in case the datetimepicker has been applied to a non-input tag for inline UI,\n\t\t\t\t * and the user has not configured the plugin to display only time in altInput,\n\t\t\t\t * pick current date time from the altInput (and hope for the best, for now, until \"ER1\" is applied)\n\t\t\t\t *\n\t\t\t\t * @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\n\t\t\t\t */\n\t\t\t\tcurrDT = tp_inst.$altInput.val();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcurrDT = tp_inst.$input.val();\n\t\t\t}\n\n\t\t\tif (date && tp_inst._parseTime(currDT, !inst.settings.timeOnly)) {\n\t\t\t\tdate.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);\n\t\t\t\tdate.setMicroseconds(tp_inst.microsec);\n\n\t\t\t\t// This is important if you are using the timezone option, javascript's Date\n\t\t\t\t// object will only return the timezone offset for the current locale, so we\n\t\t\t\t// adjust it accordingly.  If not using timezone option this won't matter..\n\t\t\t\tif (tp_inst.timezone != null) {\n\t\t\t\t\t// look out for DST if tz wasn't specified\n\t\t\t\t\tif (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {\n\t\t\t\t\t\ttp_inst.timezone = date.getTimezoneOffset() * -1;\n\t\t\t\t\t}\n\t\t\t\t\tdate = $.timepicker.timezoneAdjust(date, tp_inst.timezone, $.timepicker.timezoneOffsetString(-date.getTimezoneOffset()));\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t}\n\t\treturn this._base_getDateDatepicker(target, noDefault);\n\t};\n\n\t/*\n\t* override parseDate() because UI 1.8.14 throws an error about \"Extra characters\"\n\t* An option in datapicker to ignore extra format characters would be nicer.\n\t*/\n\t$.datepicker._base_parseDate = $.datepicker.parseDate;\n\t$.datepicker.parseDate = function (format, value, settings) {\n\t\tvar date;\n\t\ttry {\n\t\t\tdate = this._base_parseDate(format, value, settings);\n\t\t} catch (err) {\n\t\t\t// Hack!  The error message ends with a colon, a space, and\n\t\t\t// the \"extra\" characters.  We rely on that instead of\n\t\t\t// attempting to perfectly reproduce the parsing algorithm.\n\t\t\tif (err.indexOf(\":\") >= 0) {\n\t\t\t\tdate = this._base_parseDate(format, value.substring(0, value.length - (err.length - err.indexOf(':') - 2)), settings);\n\t\t\t\t$.timepicker.log(\"Error parsing the date string: \" + err + \"\\ndate string = \" + value + \"\\ndate format = \" + format);\n\t\t\t} else {\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t\treturn date;\n\t};\n\n\t/*\n\t* override formatDate to set date with time to the input\n\t*/\n\t$.datepicker._base_formatDate = $.datepicker._formatDate;\n\t$.datepicker._formatDate = function (inst, day, month, year) {\n\t\tvar tp_inst = this._get(inst, 'timepicker');\n\t\tif (tp_inst) {\n\t\t\ttp_inst._updateDateTime(inst);\n\t\t\treturn tp_inst.$input.val();\n\t\t}\n\t\treturn this._base_formatDate(inst);\n\t};\n\n\t/*\n\t* override options setter to add time to maxDate(Time) and minDate(Time). MaxDate\n\t*/\n\t$.datepicker._base_optionDatepicker = $.datepicker._optionDatepicker;\n\t$.datepicker._optionDatepicker = function (target, name, value) {\n\t\tvar inst = this._getInst(target),\n\t\t\tname_clone;\n\t\tif (!inst) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar tp_inst = this._get(inst, 'timepicker');\n\t\tif (tp_inst) {\n\t\t\tvar min = null,\n\t\t\t\tmax = null,\n\t\t\t\tonselect = null,\n\t\t\t\toverrides = tp_inst._defaults.evnts,\n\t\t\t\tfns = {},\n\t\t\t\tprop,\n\t\t\t\tret,\n\t\t\t\toldVal,\n\t\t\t\t$target;\n\t\t\tif (typeof name === 'string') { // if min/max was set with the string\n\t\t\t\tif (name === 'minDate' || name === 'minDateTime') {\n\t\t\t\t\tmin = value;\n\t\t\t\t} else if (name === 'maxDate' || name === 'maxDateTime') {\n\t\t\t\t\tmax = value;\n\t\t\t\t} else if (name === 'onSelect') {\n\t\t\t\t\tonselect = value;\n\t\t\t\t} else if (overrides.hasOwnProperty(name)) {\n\t\t\t\t\tif (typeof (value) === 'undefined') {\n\t\t\t\t\t\treturn overrides[name];\n\t\t\t\t\t}\n\t\t\t\t\tfns[name] = value;\n\t\t\t\t\tname_clone = {}; //empty results in exiting function after overrides updated\n\t\t\t\t}\n\t\t\t} else if (typeof name === 'object') { //if min/max was set with the JSON\n\t\t\t\tif (name.minDate) {\n\t\t\t\t\tmin = name.minDate;\n\t\t\t\t} else if (name.minDateTime) {\n\t\t\t\t\tmin = name.minDateTime;\n\t\t\t\t} else if (name.maxDate) {\n\t\t\t\t\tmax = name.maxDate;\n\t\t\t\t} else if (name.maxDateTime) {\n\t\t\t\t\tmax = name.maxDateTime;\n\t\t\t\t}\n\t\t\t\tfor (prop in overrides) {\n\t\t\t\t\tif (overrides.hasOwnProperty(prop) && name[prop]) {\n\t\t\t\t\t\tfns[prop] = name[prop];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (prop in fns) {\n\t\t\t\tif (fns.hasOwnProperty(prop)) {\n\t\t\t\t\toverrides[prop] = fns[prop];\n\t\t\t\t\tif (!name_clone) { name_clone = $.extend({}, name); }\n\t\t\t\t\tdelete name_clone[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (name_clone && isEmptyObject(name_clone)) { return; }\n\t\t\tif (min) { //if min was set\n\t\t\t\tif (min === 0) {\n\t\t\t\t\tmin = new Date();\n\t\t\t\t} else {\n\t\t\t\t\tmin = new Date(min);\n\t\t\t\t}\n\t\t\t\ttp_inst._defaults.minDate = min;\n\t\t\t\ttp_inst._defaults.minDateTime = min;\n\t\t\t} else if (max) { //if max was set\n\t\t\t\tif (max === 0) {\n\t\t\t\t\tmax = new Date();\n\t\t\t\t} else {\n\t\t\t\t\tmax = new Date(max);\n\t\t\t\t}\n\t\t\t\ttp_inst._defaults.maxDate = max;\n\t\t\t\ttp_inst._defaults.maxDateTime = max;\n\t\t\t} else if (onselect) {\n\t\t\t\ttp_inst._defaults.onSelect = onselect;\n\t\t\t}\n\n\t\t\t// Datepicker will override our date when we call _base_optionDatepicker when\n\t\t\t// calling minDate/maxDate, so we will first grab the value, call\n\t\t\t// _base_optionDatepicker, then set our value back.\n\t\t\tif(min || max){\n\t\t\t\t$target = $(target);\n\t\t\t\toldVal = $target.datetimepicker('getDate');\n\t\t\t\tret = this._base_optionDatepicker.call($.datepicker, target, name_clone || name, value);\n\t\t\t\t$target.datetimepicker('setDate', oldVal);\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t}\n\t\tif (value === undefined) {\n\t\t\treturn this._base_optionDatepicker.call($.datepicker, target, name);\n\t\t}\n\t\treturn this._base_optionDatepicker.call($.datepicker, target, name_clone || name, value);\n\t};\n\n\t/*\n\t* jQuery isEmptyObject does not check hasOwnProperty - if someone has added to the object prototype,\n\t* it will return false for all objects\n\t*/\n\tvar isEmptyObject = function (obj) {\n\t\tvar prop;\n\t\tfor (prop in obj) {\n\t\t\tif (obj.hasOwnProperty(prop)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t};\n\n\t/*\n\t* jQuery extend now ignores nulls!\n\t*/\n\tvar extendRemove = function (target, props) {\n\t\t$.extend(target, props);\n\t\tfor (var name in props) {\n\t\t\tif (props[name] === null || props[name] === undefined) {\n\t\t\t\ttarget[name] = props[name];\n\t\t\t}\n\t\t}\n\t\treturn target;\n\t};\n\n\t/*\n\t* Determine by the time format which units are supported\n\t* Returns an object of booleans for each unit\n\t*/\n\tvar detectSupport = function (timeFormat) {\n\t\tvar tf = timeFormat.replace(/'.*?'/g, '').toLowerCase(), // removes literals\n\t\t\tisIn = function (f, t) { // does the format contain the token?\n\t\t\t\t\treturn f.indexOf(t) !== -1 ? true : false;\n\t\t\t\t};\n\t\treturn {\n\t\t\t\thour: isIn(tf, 'h'),\n\t\t\t\tminute: isIn(tf, 'm'),\n\t\t\t\tsecond: isIn(tf, 's'),\n\t\t\t\tmillisec: isIn(tf, 'l'),\n\t\t\t\tmicrosec: isIn(tf, 'c'),\n\t\t\t\ttimezone: isIn(tf, 'z'),\n\t\t\t\tampm: isIn(tf, 't') && isIn(timeFormat, 'h'),\n\t\t\t\tiso8601: isIn(timeFormat, 'Z')\n\t\t\t};\n\t};\n\n\t/*\n\t* Converts 24 hour format into 12 hour\n\t* Returns 12 hour without leading 0\n\t*/\n\tvar convert24to12 = function (hour) {\n\t\thour %= 12;\n\n\t\tif (hour === 0) {\n\t\t\thour = 12;\n\t\t}\n\n\t\treturn String(hour);\n\t};\n\n\tvar computeEffectiveSetting = function (settings, property) {\n\t\treturn settings && settings[property] ? settings[property] : $.timepicker._defaults[property];\n\t};\n\n\t/*\n\t* Splits datetime string into date and time substrings.\n\t* Throws exception when date can't be parsed\n\t* Returns {dateString: dateString, timeString: timeString}\n\t*/\n\tvar splitDateTime = function (dateTimeString, timeSettings) {\n\t\t// The idea is to get the number separator occurrences in datetime and the time format requested (since time has\n\t\t// fewer unknowns, mostly numbers and am/pm). We will use the time pattern to split.\n\t\tvar separator = computeEffectiveSetting(timeSettings, 'separator'),\n\t\t\tformat = computeEffectiveSetting(timeSettings, 'timeFormat'),\n\t\t\ttimeParts = format.split(separator), // how many occurrences of separator may be in our format?\n\t\t\ttimePartsLen = timeParts.length,\n\t\t\tallParts = dateTimeString.split(separator),\n\t\t\tallPartsLen = allParts.length;\n\n\t\tif (allPartsLen > 1) {\n\t\t\treturn {\n\t\t\t\tdateString: allParts.splice(0, allPartsLen - timePartsLen).join(separator),\n\t\t\t\ttimeString: allParts.splice(0, timePartsLen).join(separator)\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tdateString: dateTimeString,\n\t\t\ttimeString: ''\n\t\t};\n\t};\n\n\t/*\n\t* Internal function to parse datetime interval\n\t* Returns: {date: Date, timeObj: Object}, where\n\t*   date - parsed date without time (type Date)\n\t*   timeObj = {hour: , minute: , second: , millisec: , microsec: } - parsed time. Optional\n\t*/\n\tvar parseDateTimeInternal = function (dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings) {\n\t\tvar date,\n\t\t\tparts,\n\t\t\tparsedTime;\n\n\t\tparts = splitDateTime(dateTimeString, timeSettings);\n\t\tdate = $.datepicker._base_parseDate(dateFormat, parts.dateString, dateSettings);\n\n\t\tif (parts.timeString === '') {\n\t\t\treturn {\n\t\t\t\tdate: date\n\t\t\t};\n\t\t}\n\n\t\tparsedTime = $.datepicker.parseTime(timeFormat, parts.timeString, timeSettings);\n\n\t\tif (!parsedTime) {\n\t\t\tthrow 'Wrong time format';\n\t\t}\n\n\t\treturn {\n\t\t\tdate: date,\n\t\t\ttimeObj: parsedTime\n\t\t};\n\t};\n\n\t/*\n\t* Internal function to set timezone_select to the local timezone\n\t*/\n\tvar selectLocalTimezone = function (tp_inst, date) {\n\t\tif (tp_inst && tp_inst.timezone_select) {\n\t\t\tvar now = date || new Date();\n\t\t\ttp_inst.timezone_select.val(-now.getTimezoneOffset());\n\t\t}\n\t};\n\n\t/*\n\t* Create a Singleton Instance\n\t*/\n\t$.timepicker = new Timepicker();\n\n\t/**\n\t * Get the timezone offset as string from a date object (eg '+0530' for UTC+5.5)\n\t * @param {number} tzMinutes if not a number, less than -720 (-1200), or greater than 840 (+1400) this value is returned\n\t * @param {boolean} iso8601 if true formats in accordance to iso8601 \"+12:45\"\n\t * @return {string}\n\t */\n\t$.timepicker.timezoneOffsetString = function (tzMinutes, iso8601) {\n\t\tif (isNaN(tzMinutes) || tzMinutes > 840 || tzMinutes < -720) {\n\t\t\treturn tzMinutes;\n\t\t}\n\n\t\tvar off = tzMinutes,\n\t\t\tminutes = off % 60,\n\t\t\thours = (off - minutes) / 60,\n\t\t\tiso = iso8601 ? ':' : '',\n\t\t\ttz = (off >= 0 ? '+' : '-') + ('0' + Math.abs(hours)).slice(-2) + iso + ('0' + Math.abs(minutes)).slice(-2);\n\n\t\tif (tz === '+00:00') {\n\t\t\treturn 'Z';\n\t\t}\n\t\treturn tz;\n\t};\n\n\t/**\n\t * Get the number in minutes that represents a timezone string\n\t * @param  {string} tzString formatted like \"+0500\", \"-1245\", \"Z\"\n\t * @return {number} the offset minutes or the original string if it doesn't match expectations\n\t */\n\t$.timepicker.timezoneOffsetNumber = function (tzString) {\n\t\tvar normalized = tzString.toString().replace(':', ''); // excuse any iso8601, end up with \"+1245\"\n\n\t\tif (normalized.toUpperCase() === 'Z') { // if iso8601 with Z, its 0 minute offset\n\t\t\treturn 0;\n\t\t}\n\n\t\tif (!/^(\\-|\\+)\\d{4}$/.test(normalized)) { // possibly a user defined tz, so just give it back\n\t\t\treturn parseInt(tzString, 10);\n\t\t}\n\n\t\treturn ((normalized.substr(0, 1) === '-' ? -1 : 1) * // plus or minus\n\t\t\t\t\t((parseInt(normalized.substr(1, 2), 10) * 60) + // hours (converted to minutes)\n\t\t\t\t\tparseInt(normalized.substr(3, 2), 10))); // minutes\n\t};\n\n\t/**\n\t * No way to set timezone in js Date, so we must adjust the minutes to compensate. (think setDate, getDate)\n\t * @param  {Date} date\n\t * @param  {string} fromTimezone formatted like \"+0500\", \"-1245\"\n\t * @param  {string} toTimezone formatted like \"+0500\", \"-1245\"\n\t * @return {Date}\n\t */\n\t$.timepicker.timezoneAdjust = function (date, fromTimezone, toTimezone) {\n\t\tvar fromTz = $.timepicker.timezoneOffsetNumber(fromTimezone);\n\t\tvar toTz = $.timepicker.timezoneOffsetNumber(toTimezone);\n\t\tif (!isNaN(toTz)) {\n\t\t\tdate.setMinutes(date.getMinutes() + (-fromTz) - (-toTz));\n\t\t}\n\t\treturn date;\n\t};\n\n\t/**\n\t * Calls `timepicker()` on the `startTime` and `endTime` elements, and configures them to\n\t * enforce date range limits.\n\t * n.b. The input value must be correctly formatted (reformatting is not supported)\n\t * @param  {Element} startTime\n\t * @param  {Element} endTime\n\t * @param  {Object} options Options for the timepicker() call\n\t * @return {jQuery}\n\t */\n\t$.timepicker.timeRange = function (startTime, endTime, options) {\n\t\treturn $.timepicker.handleRange('timepicker', startTime, endTime, options);\n\t};\n\n\t/**\n\t * Calls `datetimepicker` on the `startTime` and `endTime` elements, and configures them to\n\t * enforce date range limits.\n\t * @param  {Element} startTime\n\t * @param  {Element} endTime\n\t * @param  {Object} options Options for the `timepicker()` call. Also supports `reformat`,\n\t *   a boolean value that can be used to reformat the input values to the `dateFormat`.\n\t * @param  {string} method Can be used to specify the type of picker to be added\n\t * @return {jQuery}\n\t */\n\t$.timepicker.datetimeRange = function (startTime, endTime, options) {\n\t\t$.timepicker.handleRange('datetimepicker', startTime, endTime, options);\n\t};\n\n\t/**\n\t * Calls `datepicker` on the `startTime` and `endTime` elements, and configures them to\n\t * enforce date range limits.\n\t * @param  {Element} startTime\n\t * @param  {Element} endTime\n\t * @param  {Object} options Options for the `timepicker()` call. Also supports `reformat`,\n\t *   a boolean value that can be used to reformat the input values to the `dateFormat`.\n\t * @return {jQuery}\n\t */\n\t$.timepicker.dateRange = function (startTime, endTime, options) {\n\t\t$.timepicker.handleRange('datepicker', startTime, endTime, options);\n\t};\n\n\t/**\n\t * Calls `method` on the `startTime` and `endTime` elements, and configures them to\n\t * enforce date range limits.\n\t * @param  {string} method Can be used to specify the type of picker to be added\n\t * @param  {Element} startTime\n\t * @param  {Element} endTime\n\t * @param  {Object} options Options for the `timepicker()` call. Also supports `reformat`,\n\t *   a boolean value that can be used to reformat the input values to the `dateFormat`.\n\t * @return {jQuery}\n\t */\n\t$.timepicker.handleRange = function (method, startTime, endTime, options) {\n\t\toptions = $.extend({}, {\n\t\t\tminInterval: 0, // min allowed interval in milliseconds\n\t\t\tmaxInterval: 0, // max allowed interval in milliseconds\n\t\t\tstart: {},      // options for start picker\n\t\t\tend: {}         // options for end picker\n\t\t}, options);\n\n\t\t// for the mean time this fixes an issue with calling getDate with timepicker()\n\t\tvar timeOnly = false;\n\t\tif(method === 'timepicker'){\n\t\t\ttimeOnly = true;\n\t\t\tmethod = 'datetimepicker';\n\t\t}\n\n\t\tfunction checkDates(changed, other) {\n\t\t\tvar startdt = startTime[method]('getDate'),\n\t\t\t\tenddt = endTime[method]('getDate'),\n\t\t\t\tchangeddt = changed[method]('getDate');\n\n\t\t\tif (startdt !== null) {\n\t\t\t\tvar minDate = new Date(startdt.getTime()),\n\t\t\t\t\tmaxDate = new Date(startdt.getTime());\n\n\t\t\t\tminDate.setMilliseconds(minDate.getMilliseconds() + options.minInterval);\n\t\t\t\tmaxDate.setMilliseconds(maxDate.getMilliseconds() + options.maxInterval);\n\n\t\t\t\tif (options.minInterval > 0 && minDate > enddt) { // minInterval check\n\t\t\t\t\tendTime[method]('setDate', minDate);\n\t\t\t\t}\n\t\t\t\telse if (options.maxInterval > 0 && maxDate < enddt) { // max interval check\n\t\t\t\t\tendTime[method]('setDate', maxDate);\n\t\t\t\t}\n\t\t\t\telse if (startdt > enddt) {\n\t\t\t\t\tother[method]('setDate', changeddt);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction selected(changed, other, option) {\n\t\t\tif (!changed.val()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar date = changed[method].call(changed, 'getDate');\n\t\t\tif (date !== null && options.minInterval > 0) {\n\t\t\t\tif (option === 'minDate') {\n\t\t\t\t\tdate.setMilliseconds(date.getMilliseconds() + options.minInterval);\n\t\t\t\t}\n\t\t\t\tif (option === 'maxDate') {\n\t\t\t\t\tdate.setMilliseconds(date.getMilliseconds() - options.minInterval);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (date.getTime) {\n\t\t\t\tother[method].call(other, 'option', option, date);\n\t\t\t}\n\t\t}\n\n\t\t$.fn[method].call(startTime, $.extend({\n\t\t\ttimeOnly: timeOnly,\n\t\t\tonClose: function (dateText, inst) {\n\t\t\t\tcheckDates($(this), endTime);\n\t\t\t},\n\t\t\tonSelect: function (selectedDateTime) {\n\t\t\t\tselected($(this), endTime, 'minDate');\n\t\t\t}\n\t\t}, options, options.start));\n\t\t$.fn[method].call(endTime, $.extend({\n\t\t\ttimeOnly: timeOnly,\n\t\t\tonClose: function (dateText, inst) {\n\t\t\t\tcheckDates($(this), startTime);\n\t\t\t},\n\t\t\tonSelect: function (selectedDateTime) {\n\t\t\t\tselected($(this), startTime, 'maxDate');\n\t\t\t}\n\t\t}, options, options.end));\n\n\t\tcheckDates(startTime, endTime);\n\n\t\tselected(startTime, endTime, 'minDate');\n\t\tselected(endTime, startTime, 'maxDate');\n\n\t\treturn $([startTime.get(0), endTime.get(0)]);\n\t};\n\n\t/**\n\t * Log error or data to the console during error or debugging\n\t * @param  {Object} err pass any type object to log to the console during error or debugging\n\t * @return {void}\n\t */\n\t$.timepicker.log = function () {\n\t\t// Older IE (9, maybe 10) throw error on accessing `window.console.log.apply`, so check first.\n\t\tif (window.console && window.console.log && window.console.log.apply) {\n\t\t\twindow.console.log.apply(window.console, Array.prototype.slice.call(arguments));\n\t\t}\n\t};\n\n\t/*\n\t * Add util object to allow access to private methods for testability.\n\t */\n\t$.timepicker._util = {\n\t\t_extendRemove: extendRemove,\n\t\t_isEmptyObject: isEmptyObject,\n\t\t_convert24to12: convert24to12,\n\t\t_detectSupport: detectSupport,\n\t\t_selectLocalTimezone: selectLocalTimezone,\n\t\t_computeEffectiveSetting: computeEffectiveSetting,\n\t\t_splitDateTime: splitDateTime,\n\t\t_parseDateTimeInternal: parseDateTimeInternal\n\t};\n\n\t/*\n\t* Microsecond support\n\t*/\n\tif (!Date.prototype.getMicroseconds) {\n\t\tDate.prototype.microseconds = 0;\n\t\tDate.prototype.getMicroseconds = function () { return this.microseconds; };\n\t\tDate.prototype.setMicroseconds = function (m) {\n\t\t\tthis.setMilliseconds(this.getMilliseconds() + Math.floor(m / 1000));\n\t\t\tthis.microseconds = m % 1000;\n\t\t\treturn this;\n\t\t};\n\t}\n\n\t/*\n\t* Keep up with the version\n\t*/\n\t$.timepicker.version = \"1.6.3\";\n\n}));\n"]}