{"version":3,"sources":["jsdelivr-header.js","/npm/ng-material-datetimepicker@1.17.2/js/angular-material-datetimepicker.js"],"names":[],"mappings":"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","file":"/npm/ng-material-datetimepicker@1.17.2/js/angular-material-datetimepicker.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/ng-material-datetimepicker@1.17.2/js/angular-material-datetimepicker.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function () {\r\n  'use strict';\r\n\r\n  function ngMaterialDatePicker(moment) {\r\n  var moduleName = \"ngMaterialDatePicker\";\r\n\r\n  var mdAccesTime = 'data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+';\r\n  var mdCalendar = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==';\r\n  \r\n  var VIEW_STATES = {DATE: 0, HOUR: 1, MINUTE: 2};\r\n\r\n  var css = function (el, name) {\r\n    el = angular.element(el);\r\n    return ('getComputedStyle' in window) ? window.getComputedStyle(el[0])[name] : el.css(name);\r\n  };\r\n\r\n  var template =\r\n    '<md-dialog class=\"dtp\" layout=\"column\">' +\r\n    '    <md-dialog-content class=\"dtp-content\">' +\r\n    '        <div class=\"dtp-date-view\">' +\r\n    '            <header class=\"dtp-header\">' +\r\n    '                <div class=\"dtp-actual-day\" ng-if=\"::picker.dateMode\">{{picker.currentNearestMinute().format(\"dddd\")}}</div>' +\r\n    '                <div class=\"dtp-actual-day\" ng-if=\"::!picker.timeMode\">{{picker.params.shortTime?picker.currentDate.format(\"A\"):\" \"}}</div>' +\r\n    '                <div class=\"dtp-close text-right noselect\">' +\r\n    '                    <a href=\"#\" mdc-dtp-noclick ng-click=\"picker.hide()\">&times;</a>' +\r\n    '                </div>' +\r\n    '            </header>' +\r\n    '            <div class=\"dtp-date\" ng-if=\"picker.params.date\">' +\r\n    '                <div layout=\"row\">' +\r\n    '                    <div ng-click=\"picker.incrementMonth(-1)\" class=\"dtp-month-btn dtp-month-btn-prev noselect\" flex=\"30\"><span ng-if=\"picker.isPreviousMonthVisible()\">&#x25C4;</span></div>' +\r\n    '                    <md-menu md-offset=\"8 10\" flex>' +\r\n    '                        <div class=\"dtp-actual-month\" flex ng-click=\"picker.openMenu($mdMenu, $event)\">{{picker.currentDate.format(\"MMM\")|uppercase}}</div>' +\r\n    '                        <md-menu-content class=\"dtp-month-list\">' +\r\n    '                            <md-menu-item ng-repeat=\"itemMonth in picker.monthsAvailable() track by $index\">' +\r\n    '                            <md-button ng-click=\"picker.selectMonth(itemMonth)\">{{itemMonth}}</md-button>' +\r\n    '                            </md-menu-item>' +\r\n    '                        </md-menu-content>' +\r\n    '                    </md-menu>' +\r\n    '                    <div ng-click=\"picker.incrementMonth(1)\" class=\"dtp-month-btn dtp-month-btn-next noselect\" flex=\"30\"><span ng-if=\"picker.isNextMonthVisible()\">&#x25BA;</span></div>' +\r\n    '                </div>' +\r\n    '                <div class=\"dtp-actual-num\">{{picker.currentDate.format(\"DD\")}}</div>' +\r\n    '                <div layout=\"row\">' +\r\n    '                    <div ng-click=\"picker.incrementYear(-1)\" class=\"dtp-year-btn dtp-year-btn-prev noselect\" flex=\"30\"><span ng-if=\"picker.isPreviousYearVisible()\">&#x25C4;</span></div>' +\r\n    '                    <md-menu md-offset=\"8 10\" flex>' +\r\n    '                        <div class=\"dtp-actual-year\" flex ng-click=\"picker.openMenu($mdMenu, $event)\">{{picker.currentDate.format(\"YYYY\")}}</div>' +\r\n    '                        <md-menu-content class=\"dtp-year-list\">' +\r\n    '                            <md-menu-item ng-repeat=\"itemYear in picker.yearsAvailable() track by $index\">' +\r\n    '                            <md-button ng-click=\"picker.selectYear(itemYear)\">{{itemYear}}</md-button>' +\r\n    '                            </md-menu-item>' +\r\n    '                        </md-menu-content>' +\r\n    '                    </md-menu>' +\r\n    '                    <div ng-click=\"picker.incrementYear(1)\" class=\"dtp-year-btn dtp-year-btn-next noselect\" flex=\"30\"><span ng-if=\"picker.isNextYearVisible()\">&#x25BA;</span></div>' +\r\n    '                </div>'+\r\n    '            </div>' + //start time\r\n    '            <div class=\"dtp-time\" ng-if=\"picker.params.time&&!picker.params.date\">' +\r\n    '                <div class=\"dtp-actual-maxtime\">' +\r\n    '                    <span ng-if=\"!picker.params.seconds\"><span ng-class=\"{selected:picker.currentView===picker.VIEWS.HOUR}\">{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}</span>:<span ng-class=\"{selected: picker.currentView===picker.VIEWS.MINUTE}\">{{picker.currentNearestMinute().format(\"mm\")}}</span></span>'+\r\n    '                    <span ng-if=\"picker.params.seconds\"><span ng-class=\"{selected:picker.currentView===picker.VIEWS.HOUR}\">{{picker.currentNearestMinute().format(picker.params.shortTime ? \"hh\":\"HH\")}}</span>:<span ng-class=\"{selected: picker.currentView===picker.VIEWS.MINUTE}\">{{picker.currentNearestMinute().format(\"mm\")}}</span>:<span ng-class=\"{selected: picker.currentView===picker.VIEWS.SECOND}\">{{picker.currentNearestMinute().format(\"ss\")}}</span></span>'+\r\n    '                    <span class=\"dtp-actual-meridien\" ng-if=\"picker.params.shortTime\">{{picker.currentDate.format(\"A\")}}</span>'+\r\n    '                </div>' +\r\n    '            </div>' +\r\n    '            <div class=\"dtp-picker\">' +\r\n    '                <mdc-datetime-picker-calendar date=\"picker.currentDate\" picker=\"picker\" class=\"dtp-picker-calendar\" ng-if=\"picker.currentView===picker.VIEWS.DATE\"></mdc-datetime-picker-calendar>' +\r\n    '                <div class=\"dtp-picker-datetime\" ng-cloak ng-if=\"picker.currentView!==picker.VIEWS.DATE\">' +\r\n    '                    <div class=\"dtp-actual-meridien\">' +\r\n    '                        <div ng-if=\"picker.params.shortTime\" class=\"left p20\">' +\r\n    '                            <a id=\"time-periods-am\" href=\"#\" mdc-dtp-noclick class=\"dtp-meridien-am\" ng-class=\"{selected:picker.meridien===\\'AM\\'}\" ng-click=\"picker.selectAM()\">{{::picker.params.amText}}</a>' +\r\n    '                        </div>' +\r\n    '                        <div ng-if=\"!picker.timeMode&&!picker.params.seconds\" class=\"dtp-actual-time p60\">' +\r\n    '                            <span ng-class=\"{selected:picker.currentView===picker.VIEWS.HOUR}\">{{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}</span>:<span ng-class=\"{selected:picker.currentView===picker.VIEWS.MINUTE}\">{{picker.currentNearestMinute().format(\"mm\")}}</span>' +\r\n    '                        </div>' +\r\n    '                        <div ng-if=\"!picker.timeMode&&picker.params.seconds\" class=\"dtp-actual-time p60\">' +\r\n    '                            <span ng-class=\"{selected: picker.currentView===picker.VIEWS.HOUR}\">{{picker.currentNearestMinute().format(picker.params.shortTime?\"hh\":\"HH\")}}</span>:<span ng-class=\"{selected:picker.currentView===picker.VIEWS.MINUTE}\">{{picker.currentNearestMinute().format(\"mm\")}}</span>:<span ng-class=\"{selected:picker.currentView===picker.VIEWS.SECOND}\">{{picker.currentNearestMinute().format(\"ss\")}}</span>' +\r\n    '                        </div>' +\r\n    '                        <div ng-if=\"picker.params.shortTime\" class=\"right p20\">' +\r\n    '                            <a id=\"time-periods-pm\" href=\"#\" mdc-dtp-noclick class=\"dtp-meridien-pm\" ng-class=\"{selected:picker.meridien===\\'PM\\'}\" ng-click=\"picker.selectPM()\">{{::picker.params.pmText}}</a>' +\r\n    '                        </div>' +\r\n    '                        <div class=\"clearfix\"></div>' +\r\n    '                    </div>' +\r\n    '                    <mdc-datetime-picker-clock mode=\"hours\" ng-if=\"picker.currentView===picker.VIEWS.HOUR\"></mdc-datetime-picker-clock>' +\r\n    '                    <mdc-datetime-picker-clock mode=\"minutes\" ng-if=\"picker.currentView===picker.VIEWS.MINUTE\"></mdc-datetime-picker-clock>' +\r\n    '                    <mdc-datetime-picker-clock mode=\"seconds\" ng-if=\"picker.currentView===picker.VIEWS.SECOND\"></mdc-datetime-picker-clock>' +\r\n    '                </div>' +\r\n    '            </div>' +\r\n    '        </div>' +\r\n    '    </md-dialog-content>' +\r\n    '    <md-dialog-actions class=\"dtp-buttons\">' +\r\n    '        <md-button ng-if=\"::picker.params.todayBtn\" class=\"dtp-btn-today md-button\" ng-click=\"picker.today()\"> {{::picker.params.todayText}}</md-button>' +\r\n    '        <md-button class=\"dtp-btn-cancel md-button\" ng-click=\"picker.cancel()\"> {{::picker.params.cancelText}}</md-button>' +\r\n    '        <md-button class=\"dtp-btn-ok md-button\" ng-click=\"picker.ok()\"> {{::picker.params.okText}}</md-button>' +\r\n    '    </md-dialog-actions>' +\r\n    '</md-dialog>';\r\n\r\n  angular.module(moduleName, ['ngMaterial'])\r\n    .factory('mdcDefaultParams', function () {\r\n      var default_params = {\r\n        date: true,\r\n        time: true,\r\n        minutes: true,\r\n        seconds: false,\r\n        format: 'YYYY-MM-DD',\r\n        minDate: null,\r\n        maxDate: null,\r\n        currentDate: null,\r\n        lang: window.navigator.userLanguage || window.navigator.language || 'en',\r\n        weekStart: 0,\r\n        shortTime: false,\r\n        cancelText: 'Cancel',\r\n        okText: 'OK',\r\n        amText: 'AM',\r\n        pmText: 'PM',\r\n        todayBtn: true,\r\n        todayText: 'Today',\r\n        disableDates: [],\r\n        weekDays: false,\r\n        disableParentScroll: false,\r\n        autoOk: false,\r\n        editInput: false,\r\n        clickOutsideToClose: false,\r\n        minuteSteps: 5,\r\n        showIcon: false,\r\n        template: template,\r\n        templateUrl: '',\r\n        targetEvent: null,\r\n        openFrom: null,\r\n        closeTo: null\r\n      };\r\n\r\n      return function (params) {\r\n        if (params) {\r\n          for (var i in params) {\r\n            if (default_params.hasOwnProperty(i) && params.hasOwnProperty(i)) default_params[i] = params[i];\r\n          }\r\n        }\r\n        return default_params;\r\n      };\r\n    })\r\n    .directive('mdcDatetimePicker', ['$mdDialog', '$timeout', '$compile',\r\n      function ($mdDialog, $timeout, $compile) {\r\n\r\n        return {\r\n          restrict: 'A',\r\n          require: 'ngModel',\r\n          scope: {\r\n            currentDate: '=ngModel',\r\n            ngModelOptions: '=',\r\n            ngChange: '&',\r\n            time: '=',\r\n            date: '=',\r\n            minutes: '=',\r\n            seconds: '=',\r\n            minDate: '=',\r\n            maxDate: '=',\r\n            disableDates: '=',\r\n            weekDays: '=',\r\n            shortTime: '=',\r\n            weekStart: '=',\r\n            format: '@',\r\n            cancelText: '@',\r\n            okText: '@',\r\n            lang: '@',\r\n            amText: '@',\r\n            pmText: '@',\r\n            showTodaysDate: '@',\r\n            todayBtn: '=',\r\n            todayText: '@',\r\n            disableParentScroll: '=',\r\n            autoOk: '=',\r\n            editInput: '=',\r\n            clickOutsideToClose: '=',\r\n            minuteSteps: '=',\r\n            showIcon: '=',\r\n            templateUrl: '@',\r\n          },\r\n          link: function (scope, element, attrs, ngModel) {\r\n            var isOn = false;\r\n            if (!scope.format) {\r\n              if (scope.date && scope.time && scope.seconds) scope.format = 'YYYY-MM-DD HH:mm:ss';\r\n              else if (scope.date && scope.time) scope.format = 'YYYY-MM-DD HH:mm';\r\n              else if (scope.date) scope.format = 'YYYY-MM-DD';\r\n              else scope.format = 'HH:mm';\r\n            }\r\n\r\n            var dateOfTheDay = null;\r\n            if (scope.showTodaysDate !== undefined && scope.showTodaysDate !== \"false\") {\r\n              dateOfTheDay = moment();\r\n            }\r\n\r\n            if (angular.isString(scope.currentDate) && scope.currentDate !== '') {\r\n              scope.currentDate = moment(scope.currentDate, scope.format);\r\n            }\r\n\r\n            var offset;\r\n            if (ngModel) {\r\n              var ngModelOptions = {'*': '$inherit', debounce: 500};\r\n              if (angular.version.major === 1 && angular.version.minor > 5) {\r\n                ngModel.$options = ngModel.$options.createChild(ngModelOptions);\r\n                if (ngModel.$options.getOption('timezone')) offset = ngModel.$options.getOption('timezone');\r\n              } else {\r\n                if (scope.ngModelOptions && scope.ngModelOptions.timezone) ngModelOptions.timezone = scope.ngModelOptions.timezone;\r\n                ngModel.$options = ngModelOptions;\r\n                if (ngModel.$options.timezone) offset = ngModel.$options.timezone;\r\n              }\r\n              if (offset==='utc' || offset==='UTC') offset = 0;\r\n      \r\n              ngModel.$formatters.push(function (value) {\r\n                if (typeof value === 'undefined') return;\r\n                var m = moment(value);\r\n                return m.isValid() ? m.format(scope.format) : '';\r\n              });\r\n              \r\n              ngModel.$parsers.push(function (value) {\r\n                if (typeof value === 'undefined') return;\r\n                \r\n                var m = moment(value, scope.format);\r\n                if (offset !== undefined) m.utcOffset(offset, m._tzm === undefined);\r\n                if (scope.minDate) ngModel.$setValidity('min', !m.isBefore(scope.minDate));\r\n                if (scope.maxDate) ngModel.$setValidity('max', !m.isAfter(scope.maxDate));\r\n                ngModel.$setValidity('format', moment(value, scope.format, true).isValid());\r\n\r\n                return m.isValid() ? (m._isUTC ? m : m.toDate()) : '';\r\n              });\r\n              \r\n            }\r\n\r\n            function openCalendar(e) {\r\n              e.preventDefault();\r\n              element.blur();\r\n              element.parent().removeClass('md-input-focused');\r\n              if (isOn) {\r\n                return;\r\n              }\r\n              isOn = true;\r\n              var options = {};\r\n              for (var i in attrs) {\r\n                if (scope.hasOwnProperty(i) && !angular.isUndefined(scope[i])) {\r\n                  options[i] = scope[i];\r\n                }\r\n              }\r\n              options.currentDate = scope.currentDate;\r\n              options.showTodaysDate = dateOfTheDay;\r\n\r\n              var dialogOptions = {\r\n                controller: PluginController,\r\n                controllerAs: 'picker',\r\n                locals: {options: options},\r\n                openFrom: element,\r\n                closeTo: element,\r\n                parent: angular.element(document.body),\r\n                bindToController: true,\r\n                clickOutsideToClose: options.clickOutsideToClose || false,\r\n                disableParentScroll: options.disableParentScroll || false,\r\n                hasBackDrop: false,\r\n                skipHide: true,\r\n                multiple: true,\r\n              };\r\n\r\n              if (!options.templateUrl) dialogOptions.template = template;\r\n              else dialogOptions.templateUrl = options.templateUrl;\r\n              \r\n              $mdDialog.show(dialogOptions).then(function(v) {\r\n\r\n                if (offset !== undefined) v.utcOffset(offset, true);\r\n\r\n                scope.currentDate = v && !v._isUTC ? v.toDate() : v;\r\n                ngModel.$setValidity('format', true);\r\n                isOn = false;\r\n\r\n                if (!moment(scope.currentDate).isSame(options.currentDate)) {\r\n                  $timeout(scope.ngChange, 0);\r\n                }\r\n\r\n                element.parent().removeClass('md-input-focused');\r\n              }, function () {\r\n                isOn = false;\r\n                element.parent().removeClass('md-input-focused');\r\n              });\r\n            }\r\n\r\n            if (!scope.editInput) {\r\n              if (scope.showIcon) {\r\n                element.on('click', openCalendar);\r\n              } else {\r\n                element.on('focus', openCalendar);\r\n              }\r\n            }\r\n            \r\n            if (scope.showIcon) {\r\n              element.addClass('dtp-no-msclear dtp-input');\r\n              var calendarButton =\r\n              '<md-button class=\"dtp-btn-calendar md-icon-button\" type=\"button\"' +\r\n                'tabindex=\"-1\" aria-hidden=\"true\" ' +\r\n                'ng-click=\"openCalendarDiag($event)\">' +\r\n                '<md-icon aria-label=\"md-calendar\" md-svg-src=\"' + (scope.date ? mdCalendar : mdAccesTime) + '\"></md-icon>' +\r\n              '</md-button>',\r\n              clearButton = '<md-button ng-show=\"currentDate\" class=\"md-icon-button dtp-clear\" aria-hidden=\"true\" ng-click=\"clear()\">&#x2715;</md-button>';\r\n              element.after($compile(calendarButton + clearButton)(scope));\r\n\r\n              scope.openCalendarDiag = function(e) {\r\n                openCalendar(e);\r\n              };\r\n\r\n              scope.clear = function() {\r\n                ngModel.$setViewValue(null);\r\n                scope.currentDate = null;\r\n                ngModel.$render();\r\n                $timeout(function() {\r\n                  scope.ngChange();\r\n                  element[0].focus();\r\n                }, 0, false);\r\n              };\r\n            }\r\n          }\r\n        };\r\n      }])\r\n    // Returns a service that opens a dialog when the attribute shown is called\r\n    .factory('mdcDateTimeDialog', [\"$mdDialog\", \"$q\", \"mdcDefaultParams\", function ($mdDialog, $q, mdcDefaultParams) {\r\n      var defaultParams = mdcDefaultParams();\r\n      var accepted_options = Object.keys(defaultParams);\r\n      var service = {\r\n        show: function (options) {\r\n          var deferred = $q.defer();\r\n          var params = angular.copy(defaultParams);\r\n          for (var i in options) {\r\n            if (accepted_options.indexOf[i] != -1 && options.hasOwnProperty(i)) {\r\n              params = options[i];\r\n            }\r\n          }\r\n\r\n          var dateOfTheDay = null;\r\n          if (options.showTodaysDate !== undefined && options.showTodaysDate !== \"false\") {\r\n            dateOfTheDay = moment();\r\n          }\r\n          options.showTodaysDate = dateOfTheDay;\r\n\r\n          var dialogOptions = {\r\n              controller: PluginController,\r\n              controllerAs: 'picker',\r\n              locals: {options: options},\r\n              parent: angular.element(document.body),\r\n              bindToController: true,\r\n              clickOutsideToClose: options.clickOutsideToClose || false,\r\n              disableParentScroll: options.disableParentScroll || false,\r\n              skipHide: true,\r\n              multiple: true,\r\n              targetEvent: options.targetEvent,\r\n              openFrom: options.openFrom,\r\n              closeTo: options.closeTo,\r\n          };\r\n\r\n          if (!options.templateUrl) dialogOptions.template = template;\r\n          else dialogOptions.templateUrl = options.templateUrl;\r\n\r\n          $mdDialog.show(dialogOptions).then(function (v) {\r\n            deferred.resolve(v && !v._isUTC ? v.toDate() : v);\r\n          }, function () {\r\n            deferred.reject();\r\n          });\r\n          return deferred.promise;\r\n        }\r\n      };\r\n\r\n      return service;\r\n    }])\r\n  ;\r\n\r\n  var PluginController = function ($scope, $mdDialog, mdcDefaultParams) {\r\n    this.currentView = VIEW_STATES.DATE;\r\n    this._dialog = $mdDialog;\r\n\r\n    this._attachedEvents = [];\r\n    this.VIEWS = VIEW_STATES;\r\n    this.params = angular.copy(mdcDefaultParams());\r\n    this.meridien = 'AM';\r\n    this.params = angular.extend(this.params, this.options);\r\n\r\n    this.init();\r\n  };\r\n\r\n  PluginController.$inject = ['$scope', '$mdDialog', 'mdcDefaultParams'];\r\n  PluginController.prototype = {\r\n    init: function () {\r\n      this.timeMode = this.params.time && !this.params.date;\r\n      this.dateMode = this.params.date;\r\n      this.initDates();\r\n      this.start();\r\n    },\r\n    currentNearestMinute: function () {\r\n      var nearestMin = this.params.minuteSteps;\r\n      if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n      var date = this.currentDate || moment();\r\n      var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n      if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n      var seconds;\r\n      if (this.params.seconds) {\r\n        seconds = date.second();\r\n        if (seconds >= 60) seconds = 60 - 1;\r\n      } else seconds = 0;\r\n\r\n      return moment(date).minutes(minutes).seconds(seconds).millisecond(0);\r\n    },\r\n    initDates: function () {\r\n      var that = this;\r\n      var _dateParam = function (input, fallback) {\r\n        var ret = null;\r\n        if (angular.isDefined(input) && input !== null && input !== '') {\r\n          if (angular.isString(input)) {\r\n            if (typeof(that.params.format) !== 'undefined' && that.params.format !== null) {\r\n              ret = moment(input, that.params.format).locale(that.params.lang);\r\n            }\r\n            else {\r\n              ret = moment(input).locale(that.params.lang);\r\n            }\r\n          } else if (typeof input === 'number') {\r\n            ret = moment(input).locale(that.params.lang);\r\n          } else {\r\n            if (angular.isDate(input)) {\r\n              var x = input.getTime();\r\n              ret = moment(x, \"x\").locale(that.params.lang);\r\n            } else if (moment.isMoment(input)) {\r\n              if (input.isValid()) ret = input;\r\n              else ret = fallback;\r\n            }\r\n          }\r\n        } else {\r\n          ret = fallback;\r\n        }\r\n        return ret;\r\n      };\r\n\r\n      this.currentDate = _dateParam(this.params.currentDate, moment());\r\n      this.currentDate = this.currentNearestMinute();\r\n      this.minDate = _dateParam(this.params.minDate);\r\n      this.maxDate = _dateParam(this.params.maxDate);\r\n      this.disableDates = this.params.disableDates.map(function (x) {\r\n        return moment(x).format('MMMM Do YYYY');\r\n      });\r\n      this.selectDate(this.currentDate);\r\n      this.weekDays = this.params.weekDays;\r\n    },\r\n    initDate: function () {\r\n      this.currentView = VIEW_STATES.DATE;\r\n    },\r\n    initHours: function () {\r\n      this.currentView = VIEW_STATES.HOUR;\r\n    },\r\n    initMinutes: function () {\r\n      this.currentView = VIEW_STATES.MINUTE;\r\n    },\r\n    initSeconds: function () {\r\n      this.currentView = VIEW_STATES.SECOND;\r\n    },\r\n    isAfterMinDate: function (date, checkHour, checkMinute) {\r\n      var _return = true;\r\n\r\n      if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n        var _minDate = moment(this.minDate);\r\n        var _date = moment(date);\r\n\r\n        if (!checkHour && !checkMinute) {\r\n          _minDate.hour(0);\r\n          _minDate.minute(0);\r\n\r\n          _date.hour(0);\r\n          _date.minute(0);\r\n        }\r\n\r\n        _minDate.second(0);\r\n        _date.second(0);\r\n        _minDate.millisecond(0);\r\n        _date.millisecond(0);\r\n\r\n        if (!checkMinute) {\r\n          _date.minute(0);\r\n          _minDate.minute(0);\r\n\r\n          _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n        }\r\n        else {\r\n          _return = (parseInt(_date.format(\"X\")) >= parseInt(_minDate.format(\"X\")));\r\n        }\r\n      }\r\n\r\n      return _return;\r\n    },\r\n    isBeforeMaxDate: function (date, checkTime, checkMinute) {\r\n      var _return = true;\r\n\r\n      if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n        var _maxDate = moment(this.maxDate);\r\n        var _date = moment(date);\r\n\r\n        if (!checkTime && !checkMinute) {\r\n          _maxDate.hour(0);\r\n          _maxDate.minute(0);\r\n\r\n          _date.hour(0);\r\n          _date.minute(0);\r\n        }\r\n\r\n        _maxDate.second(0);\r\n        _date.second(0);\r\n        _maxDate.millisecond(0);\r\n        _date.millisecond(0);\r\n\r\n        if (!checkMinute) {\r\n          _date.minute(0);\r\n          _maxDate.minute(0);\r\n\r\n          _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n        }\r\n        else {\r\n          _return = (parseInt(_date.format(\"X\")) <= parseInt(_maxDate.format(\"X\")));\r\n        }\r\n      }\r\n\r\n      return _return;\r\n    },\r\n    isInDisableDates: function (date) {\r\n      var dut = date.format('MMMM Do YYYY');\r\n      if (this.disableDates.indexOf(dut) > -1) {\r\n        return false;\r\n      }\r\n      return true;\r\n    },\r\n    isWeekDay: function(date) {\r\n      if (this.weekDays) {\r\n        if (date.isoWeekday() <= 5) {\r\n          return true;\r\n        }\r\n        return false;\r\n      }\r\n      return true;\r\n    },\r\n    selectDate: function (date) {\r\n      if (date) {\r\n        this.currentDate = moment(date);\r\n        if (!this.isAfterMinDate(this.currentDate)) {\r\n          this.currentDate = moment(this.minDate);\r\n        }\r\n\r\n        if (!this.isBeforeMaxDate(this.currentDate)) {\r\n          this.currentDate = moment(this.maxDate);\r\n        }\r\n        this.currentDate.locale(this.params.lang);\r\n        this.calendarStart = moment(this.currentDate);\r\n        this.meridien = this.currentDate.hour() >= 12 ? 'PM' : 'AM';\r\n      }\r\n    },\r\n    isPM: function () {\r\n      return this.meridien === 'PM';\r\n    },\r\n    incrementMonth: function (amount) {\r\n      if (amount === 1 && this.isNextMonthVisible()) {\r\n        this.selectDate(this.currentDate.add(amount, 'month'));\r\n      }\r\n\r\n      if (amount === -1 && this.isPreviousMonthVisible()) {\r\n        this.selectDate(this.currentDate.add(amount, 'month'));\r\n      }\r\n    },\r\n    incrementYear: function (amount) {\r\n      if (amount === 1 && this.isNextYearVisible()) {\r\n        this.selectDate(this.currentDate.add(amount, 'year'));\r\n      }\r\n\r\n      if (amount === -1 && this.isPreviousYearVisible()) {\r\n        this.selectDate(this.currentDate.add(amount, 'year'));\r\n      }\r\n    },\r\n    openMenu: function ($mdMenu, ev) {\r\n      $mdMenu.open(ev); \r\n    },\r\n    monthsAvailable: function () {\r\n      var monthsArr = [], \r\n          _date = moment(this.currentDate);\r\n\r\n      for (var m = 0; m < 12; m++) {\r\n        var curMonth = _date.month(m);\r\n        if (this.isAfterMinDate(curMonth.endOf('month')) && this.isBeforeMaxDate(curMonth.startOf('month'))) {\r\n          monthsArr.push(curMonth.format('MMMM'));\r\n        }\r\n      }\r\n      return monthsArr;\r\n    },\r\n    selectMonth: function (month) {\r\n      this.selectDate(this.currentDate.month(month));\r\n    },\r\n    yearsAvailable: function () {\r\n      var _minDate, _maxDate, len, startYear, yearsArr = [],\r\n      _date = this.currentDate.year();\r\n\r\n      if (typeof(this.minDate) !== 'undefined' && this.minDate !== null) {\r\n        _minDate = moment(this.minDate).year();\r\n      }\r\n      if (typeof(this.maxDate) !== 'undefined' && this.maxDate !== null) {\r\n        _maxDate = moment(this.maxDate).year();\r\n      }\r\n\r\n      if (_maxDate && _minDate) {\r\n        len = _maxDate - _minDate;\r\n        startYear = _minDate;\r\n      } else if (_minDate) {\r\n        len = 115;\r\n        startYear = _minDate;\r\n      } else if (_maxDate) {\r\n        len = 30;\r\n        startYear = _maxDate - len;\r\n      } else {\r\n        len = 60;\r\n        startYear = _date - len/2;\r\n      }\r\n     \r\n      for (var i=0; i <= len; i++) {\r\n        yearsArr.push(startYear+i);\r\n      }\r\n      return yearsArr;\r\n    },\r\n    selectYear: function (year) {\r\n      this.selectDate(this.currentDate.year(year));\r\n    },\r\n    isPreviousMonthVisible: function () {\r\n      return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('month'), false, false);\r\n    },\r\n    isNextMonthVisible: function () {\r\n      return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('month'), false, false);\r\n    },\r\n    isPreviousYearVisible: function () {\r\n      return this.calendarStart && this.isAfterMinDate(moment(this.calendarStart).startOf('year'), false, false);\r\n    },\r\n    isNextYearVisible: function () {\r\n      return this.calendarStart && this.isBeforeMaxDate(moment(this.calendarStart).endOf('year'), false, false);\r\n    },\r\n    isHourAvailable: function (hour) {\r\n      var _date = moment(this.currentDate);\r\n      if (this.params.shortTime) {\r\n        _date.hour(this.convertHours(hour)).minute(0).second(0);\r\n      } else {\r\n        _date.hour(hour).minute(0).second(0);\r\n      }\r\n      return this.isAfterMinDate(_date, true, false) && this.isBeforeMaxDate(_date, true, false);\r\n    },\r\n    isMinuteAvailable: function (minute) {\r\n      var _date = moment(this.currentDate);\r\n      _date.minute(minute).second(0);\r\n\r\n      var nearestMin = this.params.minuteSteps;\r\n      if (nearestMin > 1 && 5 % nearestMin !== 0){\r\n        var _curmin = _date.minute();\r\n        var minutes = (nearestMin * Math.round(_curmin / nearestMin));\r\n        if (minutes >= 60) minutes = 60 - nearestMin;\r\n        if (minutes !== _curmin) return false;\r\n      }\r\n\r\n      return this.isAfterMinDate(_date, true, true) && this.isBeforeMaxDate(_date, true, true);\r\n    },\r\n    isSecondAvailable: function (second) {\r\n      return true;\r\n    },\r\n    start: function () {\r\n      this.currentView = VIEW_STATES.DATE;\r\n      if (this.params.date) {\r\n        this.initDate();\r\n      } else {\r\n        if (this.params.time) {\r\n          this.initHours();\r\n        }\r\n      }\r\n    },\r\n    today: function () {\r\n      var nearestMin = this.params.minuteSteps;\r\n      var date = moment();\r\n      var minutes = (nearestMin * Math.round(date.minute() / nearestMin));\r\n      if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n      var seconds;\r\n      if (this.params.seconds) {\r\n        seconds = date.second();\r\n        if (seconds >= 60) seconds = 60 - 1;\r\n      } else seconds = 0;\r\n\r\n      this.selectDate(moment(date).minutes(minutes).seconds(seconds).millisecond(0));\r\n    },\r\n    ok: function () {\r\n      switch (this.currentView) {\r\n        case VIEW_STATES.DATE:\r\n          if (this.params.time === true) {\r\n            this.initHours();\r\n          } else {\r\n            this.hide(true);\r\n          }\r\n          break;\r\n        case VIEW_STATES.HOUR:\r\n          if (this.params.minutes === true) {\r\n            this.initMinutes();\r\n          } else {\r\n            this.hide(true);\r\n          }\r\n          break;\r\n        case VIEW_STATES.MINUTE:\r\n          if (this.params.seconds === true) {\r\n            this.initSeconds();\r\n          } else {\r\n            this.hide(true);\r\n          }\r\n          break;\r\n        case VIEW_STATES.SECOND:\r\n          this.hide(true);\r\n          break;\r\n      }\r\n    },\r\n    cancel: function () {\r\n      if (this.params.time) {\r\n        switch (this.currentView) {\r\n          case VIEW_STATES.DATE:\r\n            this.hide();\r\n            break;\r\n          case VIEW_STATES.HOUR:\r\n            if (this.params.date) {\r\n              this.initDate();\r\n            }\r\n            else {\r\n              this.hide();\r\n            }\r\n            break;\r\n          case VIEW_STATES.MINUTE:\r\n            this.initHours();\r\n            break;\r\n          case VIEW_STATES.SECOND:\r\n            this.initMinutes();\r\n            break;\r\n        }\r\n      }\r\n      else {\r\n        this.hide();\r\n      }\r\n    },\r\n    selectMonthBefore: function () {\r\n      this.calendarStart.subtract(1, 'months');\r\n    },\r\n    selectMonthAfter: function () {\r\n      this.calendarStart.add(1, 'months');\r\n    },\r\n    selectYearBefore: function () {\r\n      this.calendarStart.subtract(1, 'years');\r\n    },\r\n    selectYearAfter: function () {\r\n      this.calendarStart.add(1, 'years');\r\n    },\r\n    selectAM: function () {\r\n      if (this.isHourAvailable(0) || this.isHourAvailable(12)) {\r\n        if (this.currentDate.hour() >= 12) {\r\n          this.selectDate(this.currentDate.subtract(12, 'hours'));\r\n        }\r\n        if (!this.isHourAvailable(this.currentDate.hour())) {\r\n          this.selectDate(this.currentDate.hour(this.minDate.hour()));\r\n        }\r\n        if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n          this.selectDate(this.currentDate.minute(this.minDate.minute()));\r\n        }\r\n      }\r\n    },\r\n    selectPM: function () {\r\n      if (this.isHourAvailable(12) || this.isHourAvailable(24)) {\r\n        if (this.currentDate.hour() < 12) {\r\n          this.selectDate(this.currentDate.add(12, 'hours'));\r\n        }\r\n        if (!this.isHourAvailable(this.currentDate.hour())) {\r\n          this.selectDate(this.currentDate.hour(this.maxDate.hour()));\r\n        }\r\n        if (!this.isMinuteAvailable(this.currentDate.minute())) {\r\n          this.selectDate(this.currentDate.minute(this.maxDate.minute()));\r\n        }\r\n      }\r\n    },\r\n    convertHours: function (h) {\r\n      var _return = h;\r\n      if (h < 12 && this.isPM()) _return += 12;\r\n\r\n      return _return;\r\n    },\r\n    hide: function (okBtn) {\r\n      if (okBtn) this._dialog.hide(this.currentDate);\r\n      else this._dialog.cancel();\r\n    }\r\n  };\r\n\r\n  angular.module(moduleName)\r\n    .directive('mdcDatetimePickerCalendar', [\r\n      function () {\r\n\r\n        var YEAR_MIN = 1920,\r\n          YEAR_MAX = new Date().getFullYear() + 30,\r\n          MONTHS_IN_ALL = (YEAR_MAX - YEAR_MIN + 1) * 12,\r\n          ITEM_HEIGHT = 240,\r\n          MONTHS = [];\r\n        for (var i = 0; i < MONTHS_IN_ALL; i++) {\r\n          MONTHS.push(i);\r\n        }\r\n\r\n        var currentMonthIndex = function (date, low) {\r\n          low = low ? low : 0;\r\n          var year = date.year();\r\n          var month = date.month();\r\n          return (((year - YEAR_MIN) * 12) + month - 1) - low;\r\n        };\r\n\r\n        return {\r\n          restrict: 'E',\r\n          scope: {\r\n            picker: '=',\r\n            date: '='\r\n          },\r\n          bindToController: true,\r\n          controllerAs: 'cal',\r\n          controller: ['$scope', function ($scope) {\r\n            var calendar = this, picker;\r\n\r\n            this.$onInit = function () {\r\n              picker = this.picker;\r\n\r\n              var days = [];\r\n              for (var i = picker.params.weekStart; days.length < 7; i++) {\r\n                if (i > 6) i = 0;\r\n                days.push(i.toString());\r\n              }\r\n              calendar.week = days;\r\n\r\n              if (!picker.maxDate && !picker.minDate) {\r\n                calendar.months = MONTHS;\r\n              } else {\r\n                var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n                var high = picker.maxDate ? (currentMonthIndex(picker.maxDate) + 1) : MONTHS_IN_ALL;\r\n                calendar.months = MONTHS.slice(low, high);\r\n              }\r\n\r\n              calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];\r\n            };\r\n\r\n            if (angular.version.major === 1 && angular.version.minor < 5) this.$onInit();\r\n          \r\n            calendar.getItemAtIndex = function (index) {\r\n              var month = ((index + 1) % 12) || 12;\r\n              var year = YEAR_MIN + Math.floor(index / 12);\r\n              var monthObj = moment(picker.currentDate).year(year).month(month);\r\n              return generateMonthCalendar(monthObj);\r\n            };\r\n\r\n            $scope.$watch(function () {\r\n              return picker.currentDate ? picker.currentDate.format('YYYY-MM') : '';\r\n            }, function (val2, val1) {\r\n              if (val2 != val1) {\r\n                var nDate = moment(val2, 'YYYY-MM');\r\n                var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0;\r\n                var index = currentMonthIndex(nDate, low);\r\n                if (calendar.topIndex != index) {\r\n                  calendar.topIndex = index;\r\n                }\r\n              }\r\n            });\r\n\r\n            var generateMonthCalendar = function (date) {\r\n              var month = {};\r\n              if (date !== null) {\r\n                month.name = date.format('MMMM YYYY');\r\n                var startOfMonth = moment(date).locale(picker.params.lang).startOf('month')\r\n                    .hour(date.hour())\r\n                    .minute(date.minute());\r\n                var iNumDay = startOfMonth.format('d');\r\n                month.days = [];\r\n                for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) {\r\n                  if (i === startOfMonth.date()) {\r\n                    var iWeek = calendar.week.indexOf(iNumDay.toString());\r\n                    if (iWeek > 0) {\r\n                      for (var x = 0; x < iWeek; x++) {\r\n                        month.days.push(0);\r\n                      }\r\n                    }\r\n                  }\r\n                  month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i));\r\n                }\r\n\r\n                var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek);\r\n                for (var j = 0; j < slices; j++) {\r\n                  daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek));\r\n                }\r\n                month.days = daysTmp;\r\n                return month;\r\n              }\r\n\r\n            };\r\n\r\n            calendar.toDay = function (i) {\r\n              return moment(parseInt(i), \"d\")\r\n                .locale(picker.params.lang)\r\n                .format(\"dd\")\r\n                .substring(0, 1);\r\n            };\r\n\r\n            calendar.isInRange = function (date) {\r\n              return picker.isAfterMinDate(moment(date), false, false) &&\r\n                picker.isBeforeMaxDate(moment(date), false, false) &&\r\n                picker.isWeekDay(moment(date)) &&\r\n                picker.isInDisableDates(moment(date));\r\n            };\r\n\r\n            calendar.selectDate = function (date) {\r\n              if (date) {\r\n                if (calendar.isSelectedDay(date)) {\r\n                  return picker.ok();\r\n                }\r\n                picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()));\r\n                if (picker.params.autoOk) {\r\n                  picker.ok();\r\n                }\r\n              }\r\n            };\r\n\r\n            calendar.isSelectedDay = function (m) {\r\n              return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year();\r\n            };\r\n\r\n            calendar.isDateOfTheDay = function (m) {\r\n              var today = calendar.picker.options.showTodaysDate;\r\n              if (!today) {\r\n                return false;\r\n              }\r\n\r\n              return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year();\r\n            };\r\n          }],\r\n          template: \r\n          '<md-virtual-repeat-container md-top-index=\"cal.topIndex\" class=\"months\">' +\r\n          '<div md-virtual-repeat=\"idx in ::cal.months\" md-auto-shrink md-item-size=\"' + ITEM_HEIGHT + '\">' +\r\n          '  <div mdc-datetime-picker-calendar-month idx=\"idx\"></div>' +\r\n          '</div>' +\r\n          '</md-virtual-repeat-container>'\r\n        };\r\n      }])\r\n    .directive('mdcDatetimePickerCalendarMonth', ['$compile',\r\n      function ($compile) {\r\n        var buildCalendarContent = function (element, scope) {\r\n          var tbody = angular.element(element[0].querySelector('tbody'));\r\n          var calendar = scope.cal, month = scope.month;\r\n\r\n          var tbodyHtml = [];\r\n\r\n          month.days.forEach(function (weekDays, i) {\r\n            tbodyHtml.push('<tr>');\r\n            weekDays.forEach(function (weekDay, j) {\r\n              tbodyHtml.push('<td>');\r\n              if (weekDay) {\r\n                if (calendar.isInRange(weekDay)) {\r\n                  //build a\r\n                  var scopeRef = 'month[\\'days\\'][' + i + '][' + j + ']';\r\n\r\n                  tbodyHtml.push('<a id=\"date-' + weekDay.format('YYYY-MM-DD') + '\" href=\"#\" mdc-dtp-noclick class=\"dtp-select-day\" ng-class=\"{selected: cal.isSelectedDay(' + scopeRef + '), hilite: cal.isDateOfTheDay(' + scopeRef + ')}\" ng-click=\"cal.selectDate(' + scopeRef + ')\">');\r\n                  tbodyHtml.push(weekDay.format('D'));\r\n                  tbodyHtml.push('</a>');\r\n                } else {\r\n                  tbodyHtml.push('<span class=\"dtp-select-day\">');\r\n                  tbodyHtml.push(weekDay.format('D'));\r\n                  tbodyHtml.push('</span>');\r\n                }\r\n              }\r\n              tbodyHtml.push('</td>');\r\n            });\r\n            tbodyHtml.push('</tr>');\r\n          });\r\n\r\n          tbody.html(tbodyHtml.join(''));\r\n          $compile(tbody)(scope);\r\n        };\r\n\r\n        return {\r\n          scope: {\r\n            idx: '='\r\n          },\r\n          require: '^mdcDatetimePickerCalendar',\r\n          restrict: 'AE',\r\n          template: \r\n            '<div class=\"dtp-picker-month\">{{month.name}}</div>' +\r\n            '<table class=\"table dtp-picker-days\">' +\r\n            '  <thead>' +\r\n            '    <tr>' +\r\n            '      <th ng-repeat=\"day in cal.week track by $index\">{{cal.toDay(day)}}</th>' +\r\n            '    </tr>' +\r\n            '  </thead>' +\r\n            '  <tbody>' +\r\n            '  </tbody>' +\r\n            '</table>',\r\n          link: function (scope, element, attrs, calendar) {\r\n            scope.cal = calendar;\r\n            scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n            buildCalendarContent(element, scope);\r\n            scope.$watch(function () {\r\n              return scope.idx;\r\n            }, function (idx, oldIdx) {\r\n              if (idx != oldIdx) {\r\n                scope.month = calendar.getItemAtIndex(parseInt(scope.idx));\r\n                buildCalendarContent(element, scope);\r\n              }\r\n            });\r\n          }\r\n        };\r\n      }\r\n    ])\r\n  ;\r\n\r\n  angular.module(moduleName)\r\n    .directive('mdcDtpNoclick', function () {\r\n      return {\r\n        link: function (scope, el) {\r\n          el.on('click', function (e) {\r\n            e.preventDefault();\r\n          });\r\n        }\r\n      };\r\n    });\r\n  angular.module(moduleName)\r\n    .directive('mdcDatetimePickerClock', ['$timeout',\r\n      function ($timeout) {\r\n\r\n        var template = \r\n          '<div id=\"timePicker\" class=\"dtp-picker-clock\"><span ng-if=\"!points||points.length < 1\">&nbsp;</span>' +\r\n          '<div ng-repeat=\"point in points\" class=\"dtp-picker-time noselect\" ng-style=\"point.style\">' +\r\n          '   <a href=\"#\" id=\"time-{{mode}}-{{point.display}}\" mdc-dtp-noclick ng-class=\"{selected:point.value===currentValue}\" class=\"dtp-select-hour\" ng-click=\"setTime(point.value)\" ng-if=\"pointAvailable(point)\">{{point.display}}</a>' +\r\n          '   <a href=\"#\" mdc-dtp-noclick class=\"disabled dtp-select-hour\" ng-if=\"!pointAvailable(point)\">{{point.display}}</a>' +\r\n          '</div>' +\r\n          '<div ng-if=\"points24.length\" ng-repeat=\"point24 in points24\" class=\"dtp-picker-time noselect\" ng-style=\"point24.style\">' +\r\n          '   <a href=\"#\" id=\"time-24hours-{{point24.display}}\" mdc-dtp-noclick ng-class=\"{selected:point24.value===currentValue}\" class=\"dtp-select-hour\" ng-click=\"setTime(point24.value)\" ng-if=\"pointAvailable(point24)\">{{point24.display}}</a>' +\r\n          '   <a href=\"#\" mdc-dtp-noclick class=\"disabled dtp-select-hour\" ng-if=\"!pointAvailable(point24)\">{{point24.display}}</a>' +\r\n          '</div>' +\r\n          '<div class=\"dtp-hand dtp-hour-hand\"></div>' +\r\n          '<div class=\"dtp-hand dtp-minute-hand\"></div>' +\r\n          '<div ng-if=\"picker.params.seconds\" class=\"dtp-hand dtp-second-hand\"></div>' +\r\n          '<div class=\"dtp-clock-center\"></div>' +\r\n          '</div>';\r\n\r\n        return {\r\n          restrict: 'E',\r\n          template: template,\r\n          link: function (scope, element, attrs) {\r\n            var minuteMode = attrs.mode === 'minutes';\r\n            var secondMode = attrs.mode === 'seconds';\r\n            var picker = scope.picker;\r\n            //banking on the fact that there will only be one at a time\r\n            var componentRoot = document.querySelector('md-dialog.dtp');\r\n\r\n            var setTimeDegRay = function(deg, ray) {\r\n              var val = 0;\r\n              deg = deg >= 360 ? 0 : deg;\r\n              if (deg !== 0) {\r\n                var divider = minuteMode||secondMode ? 60 : 12;\r\n                val = Math.round(divider / 360 * deg);\r\n              }\r\n\r\n              if (minuteMode) {\r\n                var nearestMin = picker.params.minuteSteps;\r\n                if (nearestMin < 1 || nearestMin > 59) nearestMin = 1;\r\n\r\n                var minutes = (nearestMin * Math.round(val / nearestMin));\r\n                if (minutes >= 60) minutes = 60 - nearestMin;\r\n\r\n                if (!scope.pointAvailable({value: val})) return;\r\n                picker.currentDate.minute(minutes);\r\n              } else if (!secondMode){\r\n                if (val === 12) val = 0;\r\n                if (!picker.params.shortTime) picker.meridien = ray > 84 ? 'AM' : 'PM';\r\n                if (picker.isPM()) val += 12;\r\n                if (!scope.pointAvailable({value: val})) return;\r\n                picker.currentDate.hour(val);\r\n              } else {\r\n                if (val >= 60) val = 0;\r\n                if (!scope.pointAvailable({value: val})) return;\r\n                picker.currentDate.second(val);\r\n              }\r\n              \r\n            };\r\n\r\n            var isTouchSupported = ('ontouchstart' in window) ? true : false,\r\n            EVENTS = {\r\n              POINTER_DOWN : isTouchSupported ? 'touchstart' : 'mousedown',\r\n              POINTER_UP   : isTouchSupported ? 'touchend'   : 'mouseup',\r\n              POINTER_MOVE : isTouchSupported ? 'touchmove'  : 'mousemove'\r\n            };\r\n\r\n            var onMoveEvent = function(e) {\r\n              e.preventDefault();\r\n\r\n              var closestTarget = e.currentTarget.closest('div'),\r\n              clientRect = closestTarget.getClientRects()[0];\r\n\r\n              if (isTouchSupported) e = e.changedTouches[0];\r\n              \r\n              var x = ((closestTarget.offsetWidth / 2) - (e.pageX - clientRect.left)),\r\n                  y = ((e.pageY - clientRect.top) - (closestTarget.offsetHeight / 2));\r\n              \r\n              var ray = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n              var deg = Math.round((Math.atan2(x, y) * (180 / Math.PI)));\r\n\r\n              $timeout(function() {\r\n                setTimeDegRay(deg+180, ray);\r\n              });\r\n            };\r\n\r\n            element.on(EVENTS.POINTER_DOWN, function() {\r\n               element.on(EVENTS.POINTER_MOVE, onMoveEvent);\r\n            });\r\n\r\n            element.on(EVENTS.POINTER_UP, function() {\r\n                element.off(EVENTS.POINTER_MOVE);\r\n            });\r\n\r\n            scope.$on(\"$destroy\", function() {\r\n                element.off(EVENTS.POINTER_MOVE, onMoveEvent); \r\n            });\r\n\r\n            var exec = function () {\r\n              var clock = angular.element(element[0].querySelector('.dtp-picker-clock')),\r\n                  pickerEl = angular.element(componentRoot.querySelector('.dtp-picker'));\r\n\r\n              var w = componentRoot.querySelector('.dtp-content').offsetWidth;\r\n              var pL = parseInt(css(pickerEl, 'paddingLeft').replace('px', '')) || 0;\r\n              var pR = parseInt(css(pickerEl, 'paddingRight').replace('px', '')) || 0;\r\n              var pT = parseInt(css(pickerEl, 'paddingTop').replace('px', '')) || 0;\r\n              var mL = parseInt(css(clock, 'marginLeft').replace('px', '')) || 0;\r\n              var mR = parseInt(css(clock, 'marginRight').replace('px', '')) || 0;\r\n              var mT = parseInt(css(clock, 'marginTop').replace('px', '')) || 0;\r\n\r\n              //set width\r\n              var clockWidth = (w - (mL + mR + pL + pR));\r\n              clock.css('width', (clockWidth) + 'px');\r\n\r\n              var r = (clockWidth / 2);\r\n              var j = r / 1.2; // radius for low number\r\n\r\n              var points = [];\r\n\r\n              for (var h = 0; h < 12; ++h) {\r\n                var x = j * Math.sin(Math.PI * 2 * (h / 12));\r\n                var y = j * Math.cos(Math.PI * 2 * (h / 12));\r\n                var left = (r + x + pL / 2) - (pL + mL);\r\n                var top = (r - y - mT / 2) - (pT + mT);\r\n\r\n                var hour = {\r\n                  left: left,\r\n                  top: top,\r\n                  value: (minuteMode||secondMode ? (h * 5) : h), //5 for minute 60/12\r\n                  style: {'margin-left': left + 'px', 'margin-top': top + 'px'}\r\n                };\r\n\r\n                if (minuteMode || secondMode) {\r\n                  hour.display = hour.value < 10 ? ('0' + hour.value) : hour.value;\r\n                } else {\r\n                  if (picker.params.shortTime) {\r\n                    hour.display = h === 0 ? 12 : h;\r\n                  } else {\r\n                    hour.display = h;\r\n                  }\r\n                }\r\n\r\n                points.push(hour);\r\n              }\r\n              scope.points = points;\r\n\r\n              if (!picker.params.shortTime && !minuteMode && !secondMode) {\r\n                var points24 = [];\r\n\r\n                var j24 = r / 1.8; // radius for high number\r\n                for (var h24 = 12; h24 < 24; ++h24) {\r\n                  var x24 = j24 * Math.sin(Math.PI * 2 * (h24 / 12));\r\n                  var y24 = j24 * Math.cos(Math.PI * 2 * (h24 / 12));\r\n                  var left24 = (r + x24 + pL / 2) - (pL + mL);\r\n                  var top24 = (r - y24 - mT / 2) - (pT + mT);\r\n\r\n                  points24.push({\r\n                    left: left24,\r\n                    top: top24,\r\n                    value: h24,\r\n                    display: h24,\r\n                    style: {'margin-left': left24 + 'px', 'margin-top': top24 + 'px'}\r\n                  });\r\n                }\r\n                scope.points24 = points24;\r\n              }\r\n\r\n              scope.mode = attrs.mode;\r\n              setCurrentValue();\r\n              clock.css('height', clockWidth + 'px');\r\n\r\n              var clockCenter = element[0].querySelector('.dtp-clock-center');\r\n              var centerWidth = (clockCenter.offsetWidth / 2) || 7.5;\r\n              var centerHeight = (clockCenter.offsetHeight / 2) || 7.5;\r\n              var _hL = r / (picker.params.shortTime ? 1.8 : 2.3);\r\n              var _mL = r / 1.4;\r\n              var _sL = r;\r\n\r\n              angular.element(element[0].querySelector('.dtp-hour-hand')).css({\r\n                left: r + (mL * 1.5) + 'px',\r\n                height: _hL + 'px',\r\n                marginTop: (r - _hL - pL) + 'px'\r\n              }).addClass(!minuteMode && !secondMode ? 'on' : '');\r\n\r\n              angular.element(element[0].querySelector('.dtp-minute-hand')).css({\r\n                left: r + (mL * 1.5) + 'px',\r\n                height: _mL + 'px',\r\n                marginTop: r - _mL - pL + 'px'\r\n              }).addClass(minuteMode ? 'on' : '');\r\n\r\n              angular.element(element[0].querySelector('.dtp-second-hand')).css({\r\n                left: r + (mL * 1.5) + 'px',\r\n                height: _sL + 'px',\r\n                marginTop: r - _sL - pL + 'px'\r\n              }).addClass(secondMode ? 'on' : '');\r\n\r\n              angular.element(clockCenter).css({\r\n                left: r + pL + mL - centerWidth + 'px',\r\n                marginTop: (r - (mL / 2)) - centerHeight + 'px'\r\n              });\r\n              animateHands();\r\n            };\r\n\r\n            var animateHands = function () {\r\n              var _date = picker.currentNearestMinute();\r\n              var h = _date.hour();\r\n              var m = _date.minute();\r\n              var s = _date.second();\r\n\r\n              rotateElement(angular.element(element[0].querySelector('.dtp-hour-hand')), 30 * h);\r\n              rotateElement(angular.element(element[0].querySelector('.dtp-minute-hand')), 6 * m);\r\n              rotateElement(angular.element(element[0].querySelector('.dtp-second-hand')), 6 * s);\r\n            };\r\n\r\n            var rotateElement = function (el, deg) {\r\n              angular.element(el).css({\r\n                WebkitTransform: 'rotate(' + deg + 'deg)',\r\n                '-moz-transform': 'rotate(' + deg + 'deg)',\r\n                '-ms-transform': 'rotate(' + deg + 'deg)',\r\n                'transform': 'rotate(' + deg + 'deg)'\r\n              });\r\n            };\r\n\r\n\r\n            var setCurrentValue = function () {\r\n              var date = picker.currentNearestMinute();\r\n              var nbH = picker.params.shortTime ? 12 : 24;\r\n              if (minuteMode) scope.currentValue = date.minute();\r\n              else if (secondMode) scope.currentValue = date.second();\r\n              else scope.currentValue = date.hour() % nbH;\r\n            };\r\n\r\n            scope.$watch(function () {\r\n              var tmp = picker.currentNearestMinute();\r\n              return tmp ? tmp.format('HH:mm:ss') : '';\r\n            }, function () {\r\n              setCurrentValue();\r\n              animateHands();\r\n            });\r\n\r\n            scope.setTime = function (val) {\r\n              if (!minuteMode && !secondMode) {\r\n                if (val === scope.currentValue && !picker.params.autoOk) picker.ok(); // double click\r\n\r\n                if (picker.params.shortTime) {\r\n                  picker.currentDate.hour(picker.isPM() ? (val + 12) : val);\r\n                } else {\r\n                  picker.currentDate.hour(val);\r\n                  if (val >= 12) picker.meridien = 'PM';\r\n                  else picker.meridien = 'AM';\r\n                }\r\n\r\n                if (picker.params.autoOk) picker.ok(); // single click\r\n              } else if (!secondMode) {\r\n                if (val === scope.currentValue && !picker.params.seconds) picker.ok(); // double click\r\n    \r\n                picker.currentDate.minute(val);\r\n                if (!picker.params.seconds) {\r\n                  picker.currentDate.second(0);\r\n                } else if (picker.params.autoOk) picker.ok(); // single click\r\n              } else {\r\n                if (val === scope.currentValue) picker.ok(); // double click\r\n                picker.currentDate.second(val);\r\n              }\r\n            };\r\n\r\n            scope.pointAvailable = function (point) {\r\n              if (minuteMode) return picker.isMinuteAvailable(point.value);\r\n              else if (secondMode) return picker.isSecondAvailable(point.value);\r\n              else return picker.isHourAvailable(point.value);\r\n            };\r\n\r\n            var unWatcher = scope.$watch(function () {\r\n              return element[0].querySelectorAll('div').length;\r\n            }, function () {\r\n              exec();\r\n              unWatcher();\r\n            });\r\n          }\r\n        };\r\n      }]);\r\n    return moduleName;\r\n  }\r\n\r\n  var isElectron = window && window.process && window.process.type;\r\n  if (typeof define === 'function' && define.amd) {\r\n    define(['moment'], ngMaterialDatePicker);\r\n  } else if (typeof module !== 'undefined' && module && module.exports && (typeof require === 'function') && !isElectron) {\r\n    module.exports = ngMaterialDatePicker(require('moment'));\r\n  } else {\r\n    ngMaterialDatePicker((typeof global !== 'undefined' ? global : window).moment);\r\n  }\r\n})();\r\n"]}