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