mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-14 07:02:34 +01:00
1 line
101 KiB
Plaintext
1 line
101 KiB
Plaintext
{"version":3,"sources":["daterangepicker.js"],"names":["root","factory","define","amd","moment","jquery","daterangepicker","module","exports","jQuery","window","undefined","require","fn","this","$","DateRangePicker","element","options","cb","parentEl","startDate","startOf","endDate","endOf","minDate","maxDate","dateLimit","autoApply","singleDatePicker","showDropdowns","showWeekNumbers","showISOWeekNumbers","showCustomRangeLabel","timePicker","timePicker24Hour","timePickerIncrement","timePickerSeconds","linkedCalendars","autoUpdateInput","alwaysShowCalendars","ranges","opens","hasClass","drops","buttonClasses","applyClass","cancelClass","locale","direction","format","separator","applyLabel","cancelLabel","weekLabel","customRangeLabel","daysOfWeek","weekdaysMin","monthNames","monthsShort","firstDay","localeData","firstDayOfWeek","callback","isShowing","leftCalendar","rightCalendar","extend","data","template","length","container","appendTo","slice","addClass","isBefore","clone","isAfter","join","isInvalidDate","isCustomDate","iterator","push","shift","start","end","range","is","val","split","setStartDate","setEndDate","add","timepicker","elem","document","createElement","innerHTML","rangeHtml","value","list","find","prepend","hide","show","prependTo","parent","html","on","proxy","clickPrev","clickNext","clickDate","hoverDate","updateFormInputs","monthOrYearChanged","timeChanged","showCalendars","formInputsFocused","formInputsBlurred","formInputsChanged","clickApply","clickCancel","clickRange","hoverRange","click.daterangepicker","focus.daterangepicker","keyup.daterangepicker","elementChanged","keydown.daterangepicker","keydown","toggle","trigger","prototype","constructor","minute","Math","round","floor","updateElement","updateMonthsInView","previousRightTime","updateView","renderTimePicker","removeAttr","removeClass","attr","updateCalendars","month","date","year","subtract","hour","second","parseInt","ampm","renderCalendar","calculateChosenLabel","side","calendar","daysInMonth","lastDay","lastMonth","lastYear","daysInLastMonth","dayOfWeek","day","i","startDay","col","row","curDate","arrow","left","right","dateHtml","currentMonth","currentYear","maxYear","minYear","inMinYear","inMaxYear","monthHtml","m","yearHtml","y","each","index","maxLimit","week","isoWeek","classes","isSame","Date","isoWeekday","isCustom","Array","apply","cname","disabled","replace","selected","timeSelector","i_in_24","time","padded","am_html","pm_html","move","containerTop","parentOffset","top","parentRightEdge","width","offset","scrollTop","scrollLeft","clientWidth","outerHeight","css","outerWidth","e","_outsideClickProxy","outsideClick","oldStartDate","oldEndDate","chosenLabel","off","target","type","closest","hideCalendars","label","getAttribute","dates","cal","parents","title","substr","el","dt","stopPropagation","customRange","isLeft","leftOrRight","isRight","isValid","dateString","keyCode","remove","removeData"],"mappings":"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","file":"daterangepicker.min.js","sourcesContent":["/**\n* @version: 2.1.24\n* @author: Dan Grossman http://www.dangrossman.info/\n* @copyright: Copyright (c) 2012-2016 Dan Grossman. All rights reserved.\n* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php\n* @website: https://www.improvely.com/\n*/\n// Follow the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Make globaly available as well\n define(['moment', 'jquery'], function (moment, jquery) {\n return (root.daterangepicker = factory(moment, jquery));\n });\n } else if (typeof module === 'object' && module.exports) {\n // Node / Browserify\n //isomorphic issue\n var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined;\n if (!jQuery) {\n jQuery = require('jquery');\n if (!jQuery.fn) jQuery.fn = {};\n }\n module.exports = factory(require('moment'), jQuery);\n } else {\n // Browser globals\n root.daterangepicker = factory(root.moment, root.jQuery);\n }\n}(this, function(moment, $) {\n var DateRangePicker = function(element, options, cb) {\n\n //default settings for options\n this.parentEl = 'body';\n this.element = $(element);\n this.startDate = moment().startOf('day');\n this.endDate = moment().endOf('day');\n this.minDate = false;\n this.maxDate = false;\n this.dateLimit = false;\n this.autoApply = false;\n this.singleDatePicker = false;\n this.showDropdowns = false;\n this.showWeekNumbers = false;\n this.showISOWeekNumbers = false;\n this.showCustomRangeLabel = true;\n this.timePicker = false;\n this.timePicker24Hour = false;\n this.timePickerIncrement = 1;\n this.timePickerSeconds = false;\n this.linkedCalendars = true;\n this.autoUpdateInput = true;\n this.alwaysShowCalendars = false;\n this.ranges = {};\n\n this.opens = 'right';\n if (this.element.hasClass('pull-right'))\n this.opens = 'left';\n\n this.drops = 'down';\n if (this.element.hasClass('dropup'))\n this.drops = 'up';\n\n this.buttonClasses = 'btn btn-sm';\n this.applyClass = 'btn-success';\n this.cancelClass = 'btn-default';\n\n this.locale = {\n direction: 'ltr',\n format: 'MM/DD/YYYY',\n separator: ' - ',\n applyLabel: 'Apply',\n cancelLabel: 'Cancel',\n weekLabel: 'W',\n customRangeLabel: 'Custom Range',\n daysOfWeek: moment.weekdaysMin(),\n monthNames: moment.monthsShort(),\n firstDay: moment.localeData().firstDayOfWeek()\n };\n\n this.callback = function() { };\n\n //some state information\n this.isShowing = false;\n this.leftCalendar = {};\n this.rightCalendar = {};\n\n //custom options from user\n if (typeof options !== 'object' || options === null)\n options = {};\n\n //allow setting options with data attributes\n //data-api options will be overwritten with custom javascript options\n options = $.extend(this.element.data(), options);\n\n //html template for the picker UI\n if (typeof options.template !== 'string' && !(options.template instanceof $))\n options.template = '<div class=\"daterangepicker dropdown-menu\">' +\n '<div class=\"calendar left\">' +\n '<div class=\"daterangepicker_input\">' +\n '<input class=\"input-mini form-control\" type=\"text\" name=\"daterangepicker_start\" value=\"\" />' +\n '<i class=\"fa fa-calendar glyphicon glyphicon-calendar\"></i>' +\n '<div class=\"calendar-time\">' +\n '<div></div>' +\n '<i class=\"fa fa-clock-o glyphicon glyphicon-time\"></i>' +\n '</div>' +\n '</div>' +\n '<div class=\"calendar-table\"></div>' +\n '</div>' +\n '<div class=\"calendar right\">' +\n '<div class=\"daterangepicker_input\">' +\n '<input class=\"input-mini form-control\" type=\"text\" name=\"daterangepicker_end\" value=\"\" />' +\n '<i class=\"fa fa-calendar glyphicon glyphicon-calendar\"></i>' +\n '<div class=\"calendar-time\">' +\n '<div></div>' +\n '<i class=\"fa fa-clock-o glyphicon glyphicon-time\"></i>' +\n '</div>' +\n '</div>' +\n '<div class=\"calendar-table\"></div>' +\n '</div>' +\n '<div class=\"ranges\">' +\n '<div class=\"range_inputs\">' +\n '<button class=\"applyBtn\" disabled=\"disabled\" type=\"button\"></button> ' +\n '<button class=\"cancelBtn\" type=\"button\"></button>' +\n '</div>' +\n '</div>' +\n '</div>';\n\n this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl);\n this.container = $(options.template).appendTo(this.parentEl);\n\n //\n // handle all the possible options overriding defaults\n //\n\n if (typeof options.locale === 'object') {\n\n if (typeof options.locale.direction === 'string')\n this.locale.direction = options.locale.direction;\n\n if (typeof options.locale.format === 'string')\n this.locale.format = options.locale.format;\n\n if (typeof options.locale.separator === 'string')\n this.locale.separator = options.locale.separator;\n\n if (typeof options.locale.daysOfWeek === 'object')\n this.locale.daysOfWeek = options.locale.daysOfWeek.slice();\n\n if (typeof options.locale.monthNames === 'object')\n this.locale.monthNames = options.locale.monthNames.slice();\n\n if (typeof options.locale.firstDay === 'number')\n this.locale.firstDay = options.locale.firstDay;\n\n if (typeof options.locale.applyLabel === 'string')\n this.locale.applyLabel = options.locale.applyLabel;\n\n if (typeof options.locale.cancelLabel === 'string')\n this.locale.cancelLabel = options.locale.cancelLabel;\n\n if (typeof options.locale.weekLabel === 'string')\n this.locale.weekLabel = options.locale.weekLabel;\n\n if (typeof options.locale.customRangeLabel === 'string')\n this.locale.customRangeLabel = options.locale.customRangeLabel;\n\n }\n this.container.addClass(this.locale.direction);\n\n if (typeof options.startDate === 'string')\n this.startDate = moment(options.startDate, this.locale.format);\n\n if (typeof options.endDate === 'string')\n this.endDate = moment(options.endDate, this.locale.format);\n\n if (typeof options.minDate === 'string')\n this.minDate = moment(options.minDate, this.locale.format);\n\n if (typeof options.maxDate === 'string')\n this.maxDate = moment(options.maxDate, this.locale.format);\n\n if (typeof options.startDate === 'object')\n this.startDate = moment(options.startDate);\n\n if (typeof options.endDate === 'object')\n this.endDate = moment(options.endDate);\n\n if (typeof options.minDate === 'object')\n this.minDate = moment(options.minDate);\n\n if (typeof options.maxDate === 'object')\n this.maxDate = moment(options.maxDate);\n\n // sanity check for bad options\n if (this.minDate && this.startDate.isBefore(this.minDate))\n this.startDate = this.minDate.clone();\n\n // sanity check for bad options\n if (this.maxDate && this.endDate.isAfter(this.maxDate))\n this.endDate = this.maxDate.clone();\n\n if (typeof options.applyClass === 'string')\n this.applyClass = options.applyClass;\n\n if (typeof options.cancelClass === 'string')\n this.cancelClass = options.cancelClass;\n\n if (typeof options.dateLimit === 'object')\n this.dateLimit = options.dateLimit;\n\n if (typeof options.opens === 'string')\n this.opens = options.opens;\n\n if (typeof options.drops === 'string')\n this.drops = options.drops;\n\n if (typeof options.showWeekNumbers === 'boolean')\n this.showWeekNumbers = options.showWeekNumbers;\n\n if (typeof options.showISOWeekNumbers === 'boolean')\n this.showISOWeekNumbers = options.showISOWeekNumbers;\n\n if (typeof options.buttonClasses === 'string')\n this.buttonClasses = options.buttonClasses;\n\n if (typeof options.buttonClasses === 'object')\n this.buttonClasses = options.buttonClasses.join(' ');\n\n if (typeof options.showDropdowns === 'boolean')\n this.showDropdowns = options.showDropdowns;\n\n if (typeof options.showCustomRangeLabel === 'boolean')\n this.showCustomRangeLabel = options.showCustomRangeLabel;\n\n if (typeof options.singleDatePicker === 'boolean') {\n this.singleDatePicker = options.singleDatePicker;\n if (this.singleDatePicker)\n this.endDate = this.startDate.clone();\n }\n\n if (typeof options.timePicker === 'boolean')\n this.timePicker = options.timePicker;\n\n if (typeof options.timePickerSeconds === 'boolean')\n this.timePickerSeconds = options.timePickerSeconds;\n\n if (typeof options.timePickerIncrement === 'number')\n this.timePickerIncrement = options.timePickerIncrement;\n\n if (typeof options.timePicker24Hour === 'boolean')\n this.timePicker24Hour = options.timePicker24Hour;\n\n if (typeof options.autoApply === 'boolean')\n this.autoApply = options.autoApply;\n\n if (typeof options.autoUpdateInput === 'boolean')\n this.autoUpdateInput = options.autoUpdateInput;\n\n if (typeof options.linkedCalendars === 'boolean')\n this.linkedCalendars = options.linkedCalendars;\n\n if (typeof options.isInvalidDate === 'function')\n this.isInvalidDate = options.isInvalidDate;\n\n if (typeof options.isCustomDate === 'function')\n this.isCustomDate = options.isCustomDate;\n\n if (typeof options.alwaysShowCalendars === 'boolean')\n this.alwaysShowCalendars = options.alwaysShowCalendars;\n\n // update day names order to firstDay\n if (this.locale.firstDay != 0) {\n var iterator = this.locale.firstDay;\n while (iterator > 0) {\n this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift());\n iterator--;\n }\n }\n\n var start, end, range;\n\n //if no start/end dates set, check if an input element contains initial values\n if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') {\n if ($(this.element).is('input[type=text]')) {\n var val = $(this.element).val(),\n split = val.split(this.locale.separator);\n\n start = end = null;\n\n if (split.length == 2) {\n start = moment(split[0], this.locale.format);\n end = moment(split[1], this.locale.format);\n } else if (this.singleDatePicker && val !== \"\") {\n start = moment(val, this.locale.format);\n end = moment(val, this.locale.format);\n }\n if (start !== null && end !== null) {\n this.setStartDate(start);\n this.setEndDate(end);\n }\n }\n }\n\n if (typeof options.ranges === 'object') {\n for (range in options.ranges) {\n\n if (typeof options.ranges[range][0] === 'string')\n start = moment(options.ranges[range][0], this.locale.format);\n else\n start = moment(options.ranges[range][0]);\n\n if (typeof options.ranges[range][1] === 'string')\n end = moment(options.ranges[range][1], this.locale.format);\n else\n end = moment(options.ranges[range][1]);\n\n // If the start or end date exceed those allowed by the minDate or dateLimit\n // options, shorten the range to the allowable period.\n if (this.minDate && start.isBefore(this.minDate))\n start = this.minDate.clone();\n\n var maxDate = this.maxDate;\n if (this.dateLimit && maxDate && start.clone().add(this.dateLimit).isAfter(maxDate))\n maxDate = start.clone().add(this.dateLimit);\n if (maxDate && end.isAfter(maxDate))\n end = maxDate.clone();\n\n // If the end of the range is before the minimum or the start of the range is\n // after the maximum, don't display this range option at all.\n if ((this.minDate && end.isBefore(this.minDate, this.timepicker ? 'minute' : 'day')) \n || (maxDate && start.isAfter(maxDate, this.timepicker ? 'minute' : 'day')))\n continue;\n\n //Support unicode chars in the range names.\n var elem = document.createElement('textarea');\n elem.innerHTML = range;\n var rangeHtml = elem.value;\n\n this.ranges[rangeHtml] = [start, end];\n }\n\n var list = '<ul>';\n for (range in this.ranges) {\n list += '<li data-range-key=\"' + range + '\">' + range + '</li>';\n }\n if (this.showCustomRangeLabel) {\n list += '<li data-range-key=\"' + this.locale.customRangeLabel + '\">' + this.locale.customRangeLabel + '</li>';\n }\n list += '</ul>';\n this.container.find('.ranges').prepend(list);\n }\n\n if (typeof cb === 'function') {\n this.callback = cb;\n }\n\n if (!this.timePicker) {\n this.startDate = this.startDate.startOf('day');\n this.endDate = this.endDate.endOf('day');\n this.container.find('.calendar-time').hide();\n }\n\n //can't be used together for now\n if (this.timePicker && this.autoApply)\n this.autoApply = false;\n\n if (this.autoApply && typeof options.ranges !== 'object') {\n this.container.find('.ranges').hide();\n } else if (this.autoApply) {\n this.container.find('.applyBtn, .cancelBtn').addClass('hide');\n }\n\n if (this.singleDatePicker) {\n this.container.addClass('single');\n this.container.find('.calendar.left').addClass('single');\n this.container.find('.calendar.left').show();\n this.container.find('.calendar.right').hide();\n this.container.find('.daterangepicker_input input, .daterangepicker_input > i').hide();\n if (this.timePicker) {\n this.container.find('.ranges ul').hide();\n } else {\n this.container.find('.ranges').hide();\n }\n }\n\n if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) {\n this.container.addClass('show-calendar');\n }\n\n this.container.addClass('opens' + this.opens);\n\n //swap the position of the predefined ranges if opens right\n if (typeof options.ranges !== 'undefined' && this.opens == 'right') {\n this.container.find('.ranges').prependTo( this.container.find('.calendar.left').parent() );\n }\n\n //apply CSS classes and labels to buttons\n this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses);\n if (this.applyClass.length)\n this.container.find('.applyBtn').addClass(this.applyClass);\n if (this.cancelClass.length)\n this.container.find('.cancelBtn').addClass(this.cancelClass);\n this.container.find('.applyBtn').html(this.locale.applyLabel);\n this.container.find('.cancelBtn').html(this.locale.cancelLabel);\n\n //\n // event listeners\n //\n\n this.container.find('.calendar')\n .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this))\n .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this))\n .on('mousedown.daterangepicker', 'td.available', $.proxy(this.clickDate, this))\n .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this))\n .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this))\n .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this))\n .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this))\n .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this))\n .on('click.daterangepicker', '.daterangepicker_input input', $.proxy(this.showCalendars, this))\n .on('focus.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsFocused, this))\n .on('blur.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsBlurred, this))\n .on('change.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this));\n\n this.container.find('.ranges')\n .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this))\n .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this))\n .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this))\n .on('mouseenter.daterangepicker', 'li', $.proxy(this.hoverRange, this))\n .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this));\n\n if (this.element.is('input') || this.element.is('button')) {\n this.element.on({\n 'click.daterangepicker': $.proxy(this.show, this),\n 'focus.daterangepicker': $.proxy(this.show, this),\n 'keyup.daterangepicker': $.proxy(this.elementChanged, this),\n 'keydown.daterangepicker': $.proxy(this.keydown, this)\n });\n } else {\n this.element.on('click.daterangepicker', $.proxy(this.toggle, this));\n }\n\n //\n // if attached to a text input, set the initial value\n //\n\n if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {\n this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));\n this.element.trigger('change');\n } else if (this.element.is('input') && this.autoUpdateInput) {\n this.element.val(this.startDate.format(this.locale.format));\n this.element.trigger('change');\n }\n\n };\n\n DateRangePicker.prototype = {\n\n constructor: DateRangePicker,\n\n setStartDate: function(startDate) {\n if (typeof startDate === 'string')\n this.startDate = moment(startDate, this.locale.format);\n\n if (typeof startDate === 'object')\n this.startDate = moment(startDate);\n\n if (!this.timePicker)\n this.startDate = this.startDate.startOf('day');\n\n if (this.timePicker && this.timePickerIncrement)\n this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\n\n if (this.minDate && this.startDate.isBefore(this.minDate)) {\n this.startDate = this.minDate;\n if (this.timePicker && this.timePickerIncrement)\n this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\n }\n\n if (this.maxDate && this.startDate.isAfter(this.maxDate)) {\n this.startDate = this.maxDate;\n if (this.timePicker && this.timePickerIncrement)\n this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\n }\n\n if (!this.isShowing)\n this.updateElement();\n\n this.updateMonthsInView();\n },\n\n setEndDate: function(endDate) {\n if (typeof endDate === 'string')\n this.endDate = moment(endDate, this.locale.format);\n\n if (typeof endDate === 'object')\n this.endDate = moment(endDate);\n\n if (!this.timePicker)\n this.endDate = this.endDate.endOf('day');\n\n if (this.timePicker && this.timePickerIncrement)\n this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\n\n if (this.endDate.isBefore(this.startDate))\n this.endDate = this.startDate.clone();\n\n if (this.maxDate && this.endDate.isAfter(this.maxDate))\n this.endDate = this.maxDate;\n\n if (this.dateLimit && this.startDate.clone().add(this.dateLimit).isBefore(this.endDate))\n this.endDate = this.startDate.clone().add(this.dateLimit);\n\n this.previousRightTime = this.endDate.clone();\n\n if (!this.isShowing)\n this.updateElement();\n\n this.updateMonthsInView();\n },\n\n isInvalidDate: function() {\n return false;\n },\n\n isCustomDate: function() {\n return false;\n },\n\n updateView: function() {\n if (this.timePicker) {\n this.renderTimePicker('left');\n this.renderTimePicker('right');\n if (!this.endDate) {\n this.container.find('.right .calendar-time select').attr('disabled', 'disabled').addClass('disabled');\n } else {\n this.container.find('.right .calendar-time select').removeAttr('disabled').removeClass('disabled');\n }\n }\n if (this.endDate) {\n this.container.find('input[name=\"daterangepicker_end\"]').removeClass('active');\n this.container.find('input[name=\"daterangepicker_start\"]').addClass('active');\n } else {\n this.container.find('input[name=\"daterangepicker_end\"]').addClass('active');\n this.container.find('input[name=\"daterangepicker_start\"]').removeClass('active');\n }\n this.updateMonthsInView();\n this.updateCalendars();\n this.updateFormInputs();\n },\n\n updateMonthsInView: function() {\n if (this.endDate) {\n\n //if both dates are visible already, do nothing\n if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month &&\n (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))\n &&\n (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))\n ) {\n return;\n }\n\n this.leftCalendar.month = this.startDate.clone().date(2);\n if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) {\n this.rightCalendar.month = this.endDate.clone().date(2);\n } else {\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\n }\n\n } else {\n if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) {\n this.leftCalendar.month = this.startDate.clone().date(2);\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\n }\n }\n if (this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate) {\n this.rightCalendar.month = this.maxDate.clone().date(2);\n this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month');\n }\n },\n\n updateCalendars: function() {\n\n if (this.timePicker) {\n var hour, minute, second;\n if (this.endDate) {\n hour = parseInt(this.container.find('.left .hourselect').val(), 10);\n minute = parseInt(this.container.find('.left .minuteselect').val(), 10);\n second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;\n if (!this.timePicker24Hour) {\n var ampm = this.container.find('.left .ampmselect').val();\n if (ampm === 'PM' && hour < 12)\n hour += 12;\n if (ampm === 'AM' && hour === 12)\n hour = 0;\n }\n } else {\n hour = parseInt(this.container.find('.right .hourselect').val(), 10);\n minute = parseInt(this.container.find('.right .minuteselect').val(), 10);\n second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;\n if (!this.timePicker24Hour) {\n var ampm = this.container.find('.right .ampmselect').val();\n if (ampm === 'PM' && hour < 12)\n hour += 12;\n if (ampm === 'AM' && hour === 12)\n hour = 0;\n }\n }\n this.leftCalendar.month.hour(hour).minute(minute).second(second);\n this.rightCalendar.month.hour(hour).minute(minute).second(second);\n }\n\n this.renderCalendar('left');\n this.renderCalendar('right');\n\n //highlight any predefined range matching the current start and end dates\n this.container.find('.ranges li').removeClass('active');\n if (this.endDate == null) return;\n\n this.calculateChosenLabel();\n },\n\n renderCalendar: function(side) {\n\n //\n // Build the matrix of dates that will populate the calendar\n //\n\n var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar;\n var month = calendar.month.month();\n var year = calendar.month.year();\n var hour = calendar.month.hour();\n var minute = calendar.month.minute();\n var second = calendar.month.second();\n var daysInMonth = moment([year, month]).daysInMonth();\n var firstDay = moment([year, month, 1]);\n var lastDay = moment([year, month, daysInMonth]);\n var lastMonth = moment(firstDay).subtract(1, 'month').month();\n var lastYear = moment(firstDay).subtract(1, 'month').year();\n var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth();\n var dayOfWeek = firstDay.day();\n\n //initialize a 6 rows x 7 columns array for the calendar\n var calendar = [];\n calendar.firstDay = firstDay;\n calendar.lastDay = lastDay;\n\n for (var i = 0; i < 6; i++) {\n calendar[i] = [];\n }\n\n //populate the calendar with date objects\n var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;\n if (startDay > daysInLastMonth)\n startDay -= 7;\n\n if (dayOfWeek == this.locale.firstDay)\n startDay = daysInLastMonth - 6;\n\n var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]);\n\n var col, row;\n for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) {\n if (i > 0 && col % 7 === 0) {\n col = 0;\n row++;\n }\n calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);\n curDate.hour(12);\n\n if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') {\n calendar[row][col] = this.minDate.clone();\n }\n\n if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') {\n calendar[row][col] = this.maxDate.clone();\n }\n\n }\n\n //make the calendar object available to hoverDate/clickDate\n if (side == 'left') {\n this.leftCalendar.calendar = calendar;\n } else {\n this.rightCalendar.calendar = calendar;\n }\n\n //\n // Display the calendar\n //\n\n var minDate = side == 'left' ? this.minDate : this.startDate;\n var maxDate = this.maxDate;\n var selected = side == 'left' ? this.startDate : this.endDate;\n var arrow = this.locale.direction == 'ltr' ? {left: 'chevron-left', right: 'chevron-right'} : {left: 'chevron-right', right: 'chevron-left'};\n\n var html = '<table class=\"table-condensed\">';\n html += '<thead>';\n html += '<tr>';\n\n // add empty cell for week number\n if (this.showWeekNumbers || this.showISOWeekNumbers)\n html += '<th></th>';\n\n if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) {\n html += '<th class=\"prev available\"><i class=\"fa fa-' + arrow.left + ' glyphicon glyphicon-' + arrow.left + '\"></i></th>';\n } else {\n html += '<th></th>';\n }\n\n var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(\" YYYY\");\n\n if (this.showDropdowns) {\n var currentMonth = calendar[1][1].month();\n var currentYear = calendar[1][1].year();\n var maxYear = (maxDate && maxDate.year()) || (currentYear + 5);\n var minYear = (minDate && minDate.year()) || (currentYear - 50);\n var inMinYear = currentYear == minYear;\n var inMaxYear = currentYear == maxYear;\n\n var monthHtml = '<select class=\"monthselect\">';\n for (var m = 0; m < 12; m++) {\n if ((!inMinYear || m >= minDate.month()) && (!inMaxYear || m <= maxDate.month())) {\n monthHtml += \"<option value='\" + m + \"'\" +\n (m === currentMonth ? \" selected='selected'\" : \"\") +\n \">\" + this.locale.monthNames[m] + \"</option>\";\n } else {\n monthHtml += \"<option value='\" + m + \"'\" +\n (m === currentMonth ? \" selected='selected'\" : \"\") +\n \" disabled='disabled'>\" + this.locale.monthNames[m] + \"</option>\";\n }\n }\n monthHtml += \"</select>\";\n\n var yearHtml = '<select class=\"yearselect\">';\n for (var y = minYear; y <= maxYear; y++) {\n yearHtml += '<option value=\"' + y + '\"' +\n (y === currentYear ? ' selected=\"selected\"' : '') +\n '>' + y + '</option>';\n }\n yearHtml += '</select>';\n\n dateHtml = monthHtml + yearHtml;\n }\n\n html += '<th colspan=\"5\" class=\"month\">' + dateHtml + '</th>';\n if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) {\n html += '<th class=\"next available\"><i class=\"fa fa-' + arrow.right + ' glyphicon glyphicon-' + arrow.right + '\"></i></th>';\n } else {\n html += '<th></th>';\n }\n\n html += '</tr>';\n html += '<tr>';\n\n // add week number label\n if (this.showWeekNumbers || this.showISOWeekNumbers)\n html += '<th class=\"week\">' + this.locale.weekLabel + '</th>';\n\n $.each(this.locale.daysOfWeek, function(index, dayOfWeek) {\n html += '<th>' + dayOfWeek + '</th>';\n });\n\n html += '</tr>';\n html += '</thead>';\n html += '<tbody>';\n\n //adjust maxDate to reflect the dateLimit setting in order to\n //grey out end dates beyond the dateLimit\n if (this.endDate == null && this.dateLimit) {\n var maxLimit = this.startDate.clone().add(this.dateLimit).endOf('day');\n if (!maxDate || maxLimit.isBefore(maxDate)) {\n maxDate = maxLimit;\n }\n }\n\n for (var row = 0; row < 6; row++) {\n html += '<tr>';\n\n // add week number\n if (this.showWeekNumbers)\n html += '<td class=\"week\">' + calendar[row][0].week() + '</td>';\n else if (this.showISOWeekNumbers)\n html += '<td class=\"week\">' + calendar[row][0].isoWeek() + '</td>';\n\n for (var col = 0; col < 7; col++) {\n\n var classes = [];\n\n //highlight today's date\n if (calendar[row][col].isSame(new Date(), \"day\"))\n classes.push('today');\n\n //highlight weekends\n if (calendar[row][col].isoWeekday() > 5)\n classes.push('weekend');\n\n //grey out the dates in other months displayed at beginning and end of this calendar\n if (calendar[row][col].month() != calendar[1][1].month())\n classes.push('off');\n\n //don't allow selection of dates before the minimum date\n if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day'))\n classes.push('off', 'disabled');\n\n //don't allow selection of dates after the maximum date\n if (maxDate && calendar[row][col].isAfter(maxDate, 'day'))\n classes.push('off', 'disabled');\n\n //don't allow selection of date if a custom function decides it's invalid\n if (this.isInvalidDate(calendar[row][col]))\n classes.push('off', 'disabled');\n\n //highlight the currently selected start date\n if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD'))\n classes.push('active', 'start-date');\n\n //highlight the currently selected end date\n if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD'))\n classes.push('active', 'end-date');\n\n //highlight dates in-between the selected dates\n if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate)\n classes.push('in-range');\n\n //apply custom classes for this date\n var isCustom = this.isCustomDate(calendar[row][col]);\n if (isCustom !== false) {\n if (typeof isCustom === 'string')\n classes.push(isCustom);\n else\n Array.prototype.push.apply(classes, isCustom);\n }\n\n var cname = '', disabled = false;\n for (var i = 0; i < classes.length; i++) {\n cname += classes[i] + ' ';\n if (classes[i] == 'disabled')\n disabled = true;\n }\n if (!disabled)\n cname += 'available';\n\n html += '<td class=\"' + cname.replace(/^\\s+|\\s+$/g, '') + '\" data-title=\"' + 'r' + row + 'c' + col + '\">' + calendar[row][col].date() + '</td>';\n\n }\n html += '</tr>';\n }\n\n html += '</tbody>';\n html += '</table>';\n\n this.container.find('.calendar.' + side + ' .calendar-table').html(html);\n\n },\n\n renderTimePicker: function(side) {\n\n // Don't bother updating the time picker if it's currently disabled\n // because an end date hasn't been clicked yet\n if (side == 'right' && !this.endDate) return;\n\n var html, selected, minDate, maxDate = this.maxDate;\n\n if (this.dateLimit && (!this.maxDate || this.startDate.clone().add(this.dateLimit).isAfter(this.maxDate)))\n maxDate = this.startDate.clone().add(this.dateLimit);\n\n if (side == 'left') {\n selected = this.startDate.clone();\n minDate = this.minDate;\n } else if (side == 'right') {\n selected = this.endDate.clone();\n minDate = this.startDate;\n\n //Preserve the time already selected\n var timeSelector = this.container.find('.calendar.right .calendar-time div');\n if (!this.endDate && timeSelector.html() != '') {\n\n selected.hour(timeSelector.find('.hourselect option:selected').val() || selected.hour());\n selected.minute(timeSelector.find('.minuteselect option:selected').val() || selected.minute());\n selected.second(timeSelector.find('.secondselect option:selected').val() || selected.second());\n\n if (!this.timePicker24Hour) {\n var ampm = timeSelector.find('.ampmselect option:selected').val();\n if (ampm === 'PM' && selected.hour() < 12)\n selected.hour(selected.hour() + 12);\n if (ampm === 'AM' && selected.hour() === 12)\n selected.hour(0);\n }\n\n }\n\n if (selected.isBefore(this.startDate))\n selected = this.startDate.clone();\n\n if (maxDate && selected.isAfter(maxDate))\n selected = maxDate.clone();\n\n }\n\n //\n // hours\n //\n\n html = '<select class=\"hourselect\">';\n\n var start = this.timePicker24Hour ? 0 : 1;\n var end = this.timePicker24Hour ? 23 : 12;\n\n for (var i = start; i <= end; i++) {\n var i_in_24 = i;\n if (!this.timePicker24Hour)\n i_in_24 = selected.hour() >= 12 ? (i == 12 ? 12 : i + 12) : (i == 12 ? 0 : i);\n\n var time = selected.clone().hour(i_in_24);\n var disabled = false;\n if (minDate && time.minute(59).isBefore(minDate))\n disabled = true;\n if (maxDate && time.minute(0).isAfter(maxDate))\n disabled = true;\n\n if (i_in_24 == selected.hour() && !disabled) {\n html += '<option value=\"' + i + '\" selected=\"selected\">' + i + '</option>';\n } else if (disabled) {\n html += '<option value=\"' + i + '\" disabled=\"disabled\" class=\"disabled\">' + i + '</option>';\n } else {\n html += '<option value=\"' + i + '\">' + i + '</option>';\n }\n }\n\n html += '</select> ';\n\n //\n // minutes\n //\n\n html += ': <select class=\"minuteselect\">';\n\n for (var i = 0; i < 60; i += this.timePickerIncrement) {\n var padded = i < 10 ? '0' + i : i;\n var time = selected.clone().minute(i);\n\n var disabled = false;\n if (minDate && time.second(59).isBefore(minDate))\n disabled = true;\n if (maxDate && time.second(0).isAfter(maxDate))\n disabled = true;\n\n if (selected.minute() == i && !disabled) {\n html += '<option value=\"' + i + '\" selected=\"selected\">' + padded + '</option>';\n } else if (disabled) {\n html += '<option value=\"' + i + '\" disabled=\"disabled\" class=\"disabled\">' + padded + '</option>';\n } else {\n html += '<option value=\"' + i + '\">' + padded + '</option>';\n }\n }\n\n html += '</select> ';\n\n //\n // seconds\n //\n\n if (this.timePickerSeconds) {\n html += ': <select class=\"secondselect\">';\n\n for (var i = 0; i < 60; i++) {\n var padded = i < 10 ? '0' + i : i;\n var time = selected.clone().second(i);\n\n var disabled = false;\n if (minDate && time.isBefore(minDate))\n disabled = true;\n if (maxDate && time.isAfter(maxDate))\n disabled = true;\n\n if (selected.second() == i && !disabled) {\n html += '<option value=\"' + i + '\" selected=\"selected\">' + padded + '</option>';\n } else if (disabled) {\n html += '<option value=\"' + i + '\" disabled=\"disabled\" class=\"disabled\">' + padded + '</option>';\n } else {\n html += '<option value=\"' + i + '\">' + padded + '</option>';\n }\n }\n\n html += '</select> ';\n }\n\n //\n // AM/PM\n //\n\n if (!this.timePicker24Hour) {\n html += '<select class=\"ampmselect\">';\n\n var am_html = '';\n var pm_html = '';\n\n if (minDate && selected.clone().hour(12).minute(0).second(0).isBefore(minDate))\n am_html = ' disabled=\"disabled\" class=\"disabled\"';\n\n if (maxDate && selected.clone().hour(0).minute(0).second(0).isAfter(maxDate))\n pm_html = ' disabled=\"disabled\" class=\"disabled\"';\n\n if (selected.hour() >= 12) {\n html += '<option value=\"AM\"' + am_html + '>AM</option><option value=\"PM\" selected=\"selected\"' + pm_html + '>PM</option>';\n } else {\n html += '<option value=\"AM\" selected=\"selected\"' + am_html + '>AM</option><option value=\"PM\"' + pm_html + '>PM</option>';\n }\n\n html += '</select>';\n }\n\n this.container.find('.calendar.' + side + ' .calendar-time div').html(html);\n\n },\n\n updateFormInputs: function() {\n\n //ignore mouse movements while an above-calendar text input has focus\n if (this.container.find('input[name=daterangepicker_start]').is(\":focus\") || this.container.find('input[name=daterangepicker_end]').is(\":focus\"))\n return;\n\n this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.locale.format));\n if (this.endDate)\n this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.locale.format));\n\n if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) {\n this.container.find('button.applyBtn').removeAttr('disabled');\n } else {\n this.container.find('button.applyBtn').attr('disabled', 'disabled');\n }\n\n },\n\n move: function() {\n var parentOffset = { top: 0, left: 0 },\n containerTop;\n var parentRightEdge = $(window).width();\n if (!this.parentEl.is('body')) {\n parentOffset = {\n top: this.parentEl.offset().top - this.parentEl.scrollTop(),\n left: this.parentEl.offset().left - this.parentEl.scrollLeft()\n };\n parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left;\n }\n\n if (this.drops == 'up')\n containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;\n else\n containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;\n this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('dropup');\n\n if (this.opens == 'left') {\n this.container.css({\n top: containerTop,\n right: parentRightEdge - this.element.offset().left - this.element.outerWidth(),\n left: 'auto'\n });\n if (this.container.offset().left < 0) {\n this.container.css({\n right: 'auto',\n left: 9\n });\n }\n } else if (this.opens == 'center') {\n this.container.css({\n top: containerTop,\n left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2\n - this.container.outerWidth() / 2,\n right: 'auto'\n });\n if (this.container.offset().left < 0) {\n this.container.css({\n right: 'auto',\n left: 9\n });\n }\n } else {\n this.container.css({\n top: containerTop,\n left: this.element.offset().left - parentOffset.left,\n right: 'auto'\n });\n if (this.container.offset().left + this.container.outerWidth() > $(window).width()) {\n this.container.css({\n left: 'auto',\n right: 0\n });\n }\n }\n },\n\n show: function(e) {\n if (this.isShowing) return;\n\n // Create a click proxy that is private to this instance of datepicker, for unbinding\n this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this);\n\n // Bind global datepicker mousedown for hiding and\n $(document)\n .on('mousedown.daterangepicker', this._outsideClickProxy)\n // also support mobile devices\n .on('touchend.daterangepicker', this._outsideClickProxy)\n // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them\n .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy)\n // and also close when focus changes to outside the picker (eg. tabbing between controls)\n .on('focusin.daterangepicker', this._outsideClickProxy);\n\n // Reposition the picker if the window is resized while it's open\n $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this));\n\n this.oldStartDate = this.startDate.clone();\n this.oldEndDate = this.endDate.clone();\n this.previousRightTime = this.endDate.clone();\n\n this.updateView();\n this.container.show();\n this.move();\n this.element.trigger('show.daterangepicker', this);\n this.isShowing = true;\n },\n\n hide: function(e) {\n if (!this.isShowing) return;\n\n //incomplete date selection, revert to last values\n if (!this.endDate) {\n this.startDate = this.oldStartDate.clone();\n this.endDate = this.oldEndDate.clone();\n }\n\n //if a new date range was selected, invoke the user callback function\n if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate))\n this.callback(this.startDate, this.endDate, this.chosenLabel);\n\n //if picker is attached to a text input, update it\n this.updateElement();\n\n $(document).off('.daterangepicker');\n $(window).off('.daterangepicker');\n this.container.hide();\n this.element.trigger('hide.daterangepicker', this);\n this.isShowing = false;\n },\n\n toggle: function(e) {\n if (this.isShowing) {\n this.hide();\n } else {\n this.show();\n }\n },\n\n outsideClick: function(e) {\n var target = $(e.target);\n // if the page is clicked anywhere except within the daterangerpicker/button\n // itself then call this.hide()\n if (\n // ie modal dialog fix\n e.type == \"focusin\" ||\n target.closest(this.element).length ||\n target.closest(this.container).length ||\n target.closest('.calendar-table').length\n ) return;\n this.hide();\n this.element.trigger('outsideClick.daterangepicker', this);\n },\n\n showCalendars: function() {\n this.container.addClass('show-calendar');\n this.move();\n this.element.trigger('showCalendar.daterangepicker', this);\n },\n\n hideCalendars: function() {\n this.container.removeClass('show-calendar');\n this.element.trigger('hideCalendar.daterangepicker', this);\n },\n\n hoverRange: function(e) {\n\n //ignore mouse movements while an above-calendar text input has focus\n if (this.container.find('input[name=daterangepicker_start]').is(\":focus\") || this.container.find('input[name=daterangepicker_end]').is(\":focus\"))\n return;\n\n var label = e.target.getAttribute('data-range-key');\n\n if (label == this.locale.customRangeLabel) {\n this.updateView();\n } else {\n var dates = this.ranges[label];\n this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.locale.format));\n this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.locale.format));\n }\n\n },\n\n clickRange: function(e) {\n var label = e.target.getAttribute('data-range-key');\n this.chosenLabel = label;\n if (label == this.locale.customRangeLabel) {\n this.showCalendars();\n } else {\n var dates = this.ranges[label];\n this.startDate = dates[0];\n this.endDate = dates[1];\n\n if (!this.timePicker) {\n this.startDate.startOf('day');\n this.endDate.endOf('day');\n }\n\n if (!this.alwaysShowCalendars)\n this.hideCalendars();\n this.clickApply();\n }\n },\n\n clickPrev: function(e) {\n var cal = $(e.target).parents('.calendar');\n if (cal.hasClass('left')) {\n this.leftCalendar.month.subtract(1, 'month');\n if (this.linkedCalendars)\n this.rightCalendar.month.subtract(1, 'month');\n } else {\n this.rightCalendar.month.subtract(1, 'month');\n }\n this.updateCalendars();\n },\n\n clickNext: function(e) {\n var cal = $(e.target).parents('.calendar');\n if (cal.hasClass('left')) {\n this.leftCalendar.month.add(1, 'month');\n } else {\n this.rightCalendar.month.add(1, 'month');\n if (this.linkedCalendars)\n this.leftCalendar.month.add(1, 'month');\n }\n this.updateCalendars();\n },\n\n hoverDate: function(e) {\n\n //ignore mouse movements while an above-calendar text input has focus\n //if (this.container.find('input[name=daterangepicker_start]').is(\":focus\") || this.container.find('input[name=daterangepicker_end]').is(\":focus\"))\n // return;\n\n //ignore dates that can't be selected\n if (!$(e.target).hasClass('available')) return;\n\n //have the text inputs above calendars reflect the date being hovered over\n var title = $(e.target).attr('data-title');\n var row = title.substr(1, 1);\n var col = title.substr(3, 1);\n var cal = $(e.target).parents('.calendar');\n var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\n\n if (this.endDate && !this.container.find('input[name=daterangepicker_start]').is(\":focus\")) {\n this.container.find('input[name=daterangepicker_start]').val(date.format(this.locale.format));\n } else if (!this.endDate && !this.container.find('input[name=daterangepicker_end]').is(\":focus\")) {\n this.container.find('input[name=daterangepicker_end]').val(date.format(this.locale.format));\n }\n\n //highlight the dates between the start date and the date being hovered as a potential end date\n var leftCalendar = this.leftCalendar;\n var rightCalendar = this.rightCalendar;\n var startDate = this.startDate;\n if (!this.endDate) {\n this.container.find('.calendar td').each(function(index, el) {\n\n //skip week numbers, only look at dates\n if ($(el).hasClass('week')) return;\n\n var title = $(el).attr('data-title');\n var row = title.substr(1, 1);\n var col = title.substr(3, 1);\n var cal = $(el).parents('.calendar');\n var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col];\n\n if ((dt.isAfter(startDate) && dt.isBefore(date)) || dt.isSame(date, 'day')) {\n $(el).addClass('in-range');\n } else {\n $(el).removeClass('in-range');\n }\n\n });\n }\n\n },\n\n clickDate: function(e) {\n\n if (!$(e.target).hasClass('available')) return;\n\n var title = $(e.target).attr('data-title');\n var row = title.substr(1, 1);\n var col = title.substr(3, 1);\n var cal = $(e.target).parents('.calendar');\n var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\n\n //\n // this function needs to do a few things:\n // * alternate between selecting a start and end date for the range,\n // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date\n // * if autoapply is enabled, and an end date was chosen, apply the selection\n // * if single date picker mode, and time picker isn't enabled, apply the selection immediately\n // * if one of the inputs above the calendars was focused, cancel that manual input\n //\n\n if (this.endDate || date.isBefore(this.startDate, 'day')) { //picking start\n if (this.timePicker) {\n var hour = parseInt(this.container.find('.left .hourselect').val(), 10);\n if (!this.timePicker24Hour) {\n var ampm = this.container.find('.left .ampmselect').val();\n if (ampm === 'PM' && hour < 12)\n hour += 12;\n if (ampm === 'AM' && hour === 12)\n hour = 0;\n }\n var minute = parseInt(this.container.find('.left .minuteselect').val(), 10);\n var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;\n date = date.clone().hour(hour).minute(minute).second(second);\n }\n this.endDate = null;\n this.setStartDate(date.clone());\n } else if (!this.endDate && date.isBefore(this.startDate)) {\n //special case: clicking the same date for start/end,\n //but the time of the end date is before the start date\n this.setEndDate(this.startDate.clone());\n } else { // picking end\n if (this.timePicker) {\n var hour = parseInt(this.container.find('.right .hourselect').val(), 10);\n if (!this.timePicker24Hour) {\n var ampm = this.container.find('.right .ampmselect').val();\n if (ampm === 'PM' && hour < 12)\n hour += 12;\n if (ampm === 'AM' && hour === 12)\n hour = 0;\n }\n var minute = parseInt(this.container.find('.right .minuteselect').val(), 10);\n var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;\n date = date.clone().hour(hour).minute(minute).second(second);\n }\n this.setEndDate(date.clone());\n if (this.autoApply) {\n this.calculateChosenLabel();\n this.clickApply();\n }\n }\n\n if (this.singleDatePicker) {\n this.setEndDate(this.startDate);\n if (!this.timePicker)\n this.clickApply();\n }\n\n this.updateView();\n\n //This is to cancel the blur event handler if the mouse was in one of the inputs\n e.stopPropagation();\n\n },\n\n calculateChosenLabel: function() {\n var customRange = true;\n var i = 0;\n for (var range in this.ranges) {\n if (this.timePicker) {\n if (this.startDate.isSame(this.ranges[range][0]) && this.endDate.isSame(this.ranges[range][1])) {\n customRange = false;\n this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html();\n break;\n }\n } else {\n //ignore times when comparing dates if time picker is not enabled\n if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) {\n customRange = false;\n this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html();\n break;\n }\n }\n i++;\n }\n if (customRange && this.showCustomRangeLabel) {\n this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html();\n this.showCalendars();\n }\n },\n\n clickApply: function(e) {\n this.hide();\n this.element.trigger('apply.daterangepicker', this);\n },\n\n clickCancel: function(e) {\n this.startDate = this.oldStartDate;\n this.endDate = this.oldEndDate;\n this.hide();\n this.element.trigger('cancel.daterangepicker', this);\n },\n\n monthOrYearChanged: function(e) {\n var isLeft = $(e.target).closest('.calendar').hasClass('left'),\n leftOrRight = isLeft ? 'left' : 'right',\n cal = this.container.find('.calendar.'+leftOrRight);\n\n // Month must be Number for new moment versions\n var month = parseInt(cal.find('.monthselect').val(), 10);\n var year = cal.find('.yearselect').val();\n\n if (!isLeft) {\n if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) {\n month = this.startDate.month();\n year = this.startDate.year();\n }\n }\n\n if (this.minDate) {\n if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) {\n month = this.minDate.month();\n year = this.minDate.year();\n }\n }\n\n if (this.maxDate) {\n if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) {\n month = this.maxDate.month();\n year = this.maxDate.year();\n }\n }\n\n if (isLeft) {\n this.leftCalendar.month.month(month).year(year);\n if (this.linkedCalendars)\n this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');\n } else {\n this.rightCalendar.month.month(month).year(year);\n if (this.linkedCalendars)\n this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');\n }\n this.updateCalendars();\n },\n\n timeChanged: function(e) {\n\n var cal = $(e.target).closest('.calendar'),\n isLeft = cal.hasClass('left');\n\n var hour = parseInt(cal.find('.hourselect').val(), 10);\n var minute = parseInt(cal.find('.minuteselect').val(), 10);\n var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0;\n\n if (!this.timePicker24Hour) {\n var ampm = cal.find('.ampmselect').val();\n if (ampm === 'PM' && hour < 12)\n hour += 12;\n if (ampm === 'AM' && hour === 12)\n hour = 0;\n }\n\n if (isLeft) {\n var start = this.startDate.clone();\n start.hour(hour);\n start.minute(minute);\n start.second(second);\n this.setStartDate(start);\n if (this.singleDatePicker) {\n this.endDate = this.startDate.clone();\n } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {\n this.setEndDate(start.clone());\n }\n } else if (this.endDate) {\n var end = this.endDate.clone();\n end.hour(hour);\n end.minute(minute);\n end.second(second);\n this.setEndDate(end);\n }\n\n //update the calendars so all clickable dates reflect the new time component\n this.updateCalendars();\n\n //update the form inputs above the calendars with the new time\n this.updateFormInputs();\n\n //re-render the time pickers because changing one selection can affect what's enabled in another\n this.renderTimePicker('left');\n this.renderTimePicker('right');\n\n },\n\n formInputsChanged: function(e) {\n var isRight = $(e.target).closest('.calendar').hasClass('right');\n var start = moment(this.container.find('input[name=\"daterangepicker_start\"]').val(), this.locale.format);\n var end = moment(this.container.find('input[name=\"daterangepicker_end\"]').val(), this.locale.format);\n\n if (start.isValid() && end.isValid()) {\n\n if (isRight && end.isBefore(start))\n start = end.clone();\n\n this.setStartDate(start);\n this.setEndDate(end);\n\n if (isRight) {\n this.container.find('input[name=\"daterangepicker_start\"]').val(this.startDate.format(this.locale.format));\n } else {\n this.container.find('input[name=\"daterangepicker_end\"]').val(this.endDate.format(this.locale.format));\n }\n\n }\n\n this.updateView();\n },\n\n formInputsFocused: function(e) {\n\n // Highlight the focused input\n this.container.find('input[name=\"daterangepicker_start\"], input[name=\"daterangepicker_end\"]').removeClass('active');\n $(e.target).addClass('active');\n\n // Set the state such that if the user goes back to using a mouse, \n // the calendars are aware we're selecting the end of the range, not\n // the start. This allows someone to edit the end of a date range without\n // re-selecting the beginning, by clicking on the end date input then\n // using the calendar.\n var isRight = $(e.target).closest('.calendar').hasClass('right');\n if (isRight) {\n this.endDate = null;\n this.setStartDate(this.startDate.clone());\n this.updateView();\n }\n\n },\n\n formInputsBlurred: function(e) {\n\n // this function has one purpose right now: if you tab from the first\n // text input to the second in the UI, the endDate is nulled so that\n // you can click another, but if you tab out without clicking anything\n // or changing the input value, the old endDate should be retained\n\n if (!this.endDate) {\n var val = this.container.find('input[name=\"daterangepicker_end\"]').val();\n var end = moment(val, this.locale.format);\n if (end.isValid()) {\n this.setEndDate(end);\n this.updateView();\n }\n }\n\n },\n\n elementChanged: function() {\n if (!this.element.is('input')) return;\n if (!this.element.val().length) return;\n if (this.element.val().length < this.locale.format.length) return;\n\n var dateString = this.element.val().split(this.locale.separator),\n start = null,\n end = null;\n\n if (dateString.length === 2) {\n start = moment(dateString[0], this.locale.format);\n end = moment(dateString[1], this.locale.format);\n }\n\n if (this.singleDatePicker || start === null || end === null) {\n start = moment(this.element.val(), this.locale.format);\n end = start;\n }\n\n if (!start.isValid() || !end.isValid()) return;\n\n this.setStartDate(start);\n this.setEndDate(end);\n this.updateView();\n },\n\n keydown: function(e) {\n //hide on tab or enter\n if ((e.keyCode === 9) || (e.keyCode === 13)) {\n this.hide();\n }\n },\n\n updateElement: function() {\n if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {\n this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));\n this.element.trigger('change');\n } else if (this.element.is('input') && this.autoUpdateInput) {\n this.element.val(this.startDate.format(this.locale.format));\n this.element.trigger('change');\n }\n },\n\n remove: function() {\n this.container.remove();\n this.element.off('.daterangepicker');\n this.element.removeData();\n }\n\n };\n\n $.fn.daterangepicker = function(options, callback) {\n this.each(function() {\n var el = $(this);\n if (el.data('daterangepicker'))\n el.data('daterangepicker').remove();\n el.data('daterangepicker', new DateRangePicker(el, options, callback));\n });\n return this;\n };\n\n return DateRangePicker;\n\n}));\n"]} |