--- /dev/null
+/*! Angular Moment Picker - v0.5.0 - https://github.com/indrimuska/angular-moment-picker - (c) 2015 Indri Muska - MIT */
+!function(a){var b,c,d,e,f,g=function(){function b(){defaults={locale:"en",format:"L LTS",minView:"decade",maxView:"minute",startView:"year",leftArrow:"←",rightArrow:"→",yearsFormat:"YYYY",monthsFormat:"MMM",daysFormat:"D",hoursFormat:"HH:[00]",minutesFormat:moment.localeData().longDateFormat("LT").replace(/[aA]/,""),secondsFormat:"ss",minutesStep:5,secondsStep:1}}return b.prototype.options=function(b){return a.extend(defaults,b),a.copy(defaults)},b.prototype.$get=function(){return defaults},b}(),h=function(){function g(a,g,h,i,j){this.restrict="A",this.scope={model:"=momentPicker",locale:"@?",format:"@?",minView:"@?",maxView:"@?",startView:"@?",minDate:"=?",maxDate:"=?",disabled:"=?disable",change:"&?"},b=a,c=g,d=h,e=i,f=j}return g.prototype.$inject=["$timeout","$sce","$compile","$document","momentPicker"],g.prototype.link=function(g,h,i){g.template='<div class="moment-picker-container {{view.selected}}-view" ng-show="view.isOpen && !disabled" ng-class="{\'moment-picker-disabled\': disabled}"><table class="header-view"><thead><tr><th ng-class="{disabled: !view.previous.selectable}" ng-bind-html="view.previous.label" ng-click="view.previous.set()"></th><th ng-bind="view.title" ng-click="view.setParentView()"></th><th ng-class="{disabled: !view.next.selectable}" ng-bind-html="view.next.label" ng-click="view.next.set()"></th></tr></thead></table><div class="moment-picker-specific-views"><table ng-if="view.selected == \'decade\'"><tbody><tr ng-repeat="fourYear in decadeView.fourYears"><td ng-repeat="year in fourYear track by year.year" ng-class="year.class" ng-bind="year.label" ng-click="decadeView.setYear(year)"></td></tr></tbody></table><table ng-if="view.selected == \'year\'"><tbody><tr ng-repeat="fourMonth in yearView.fourMonths"><td ng-repeat="month in fourMonth track by month.month" ng-class="month.class" ng-bind="month.label" ng-click="yearView.setMonth(month)"></td></tr></tbody></table><table ng-if="view.selected == \'month\'"><thead><tr><th ng-repeat="day in monthView.days" ng-bind="day"></th></tr></thead><tbody><tr ng-repeat="days in monthView.weeks"><td ng-repeat="day in days track by day.date" ng-class="day.class" ng-bind="day.label" ng-click="monthView.setDate(day)"></td></tr></tbody></table><table ng-if="view.selected == \'day\'"><tbody><tr ng-repeat="threeHours in dayView.threeHours"><td ng-repeat="hour in threeHours track by hour.hour" ng-class="hour.class" ng-bind="hour.label" ng-click="dayView.setHour(hour)"></td></tr></tbody></table><table ng-if="view.selected == \'hour\'"><tbody><tr ng-repeat="minutes in hourView.minutes"><td ng-repeat="minute in minutes" ng-class="minute.class" ng-bind="minute.label" ng-click="hourView.setMinute(minute)"></td></tr></tbody></table><table ng-if="view.selected == \'minute\'"><tbody><tr ng-repeat="seconds in minuteView.seconds"><td ng-repeat="second in seconds" ng-class="second.class" ng-bind="second.label" ng-click="minuteView.setSecond(second)"></td></tr></tbody></table></div></div>',a.forEach(["locale","format","minView","maxView","startView","leftArrow","rightArrow"],function(b){a.isDefined(g[b])||(g[b]=f[b]),a.isDefined(i[b])||(i[b]=g[b])}),g.momentToDate=function(b){return a.isDefined(b)&&b.isValid()?b.clone().toDate():void 0},g.valueUpdate=function(){g.disabled||(g.value=g.momentToDate(g.valueMoment))},g.limits={isAfterOrEqualMin:function(b,c){return!a.isDefined(g.minDateMoment)||b.isAfter(g.minDateMoment,c)||b.isSame(g.minDateMoment,c)},isBeforeOrEqualMax:function(b,c){return!a.isDefined(g.maxDateMoment)||b.isBefore(g.maxDateMoment,c)||b.isSame(g.maxDateMoment,c)},isSelectable:function(a,b){return g.limits.isAfterOrEqualMin(a,b)&&g.limits.isBeforeOrEqualMax(a,b)},checkValue:function(){a.isDefined(g.valueMoment)&&(g.limits.isAfterOrEqualMin(g.valueMoment)||g.valueUpdate(g.valueMoment=g.minDateMoment.clone()),g.limits.isBeforeOrEqualMax(g.valueMoment)||g.valueUpdate(g.valueMoment=g.maxDateMoment.clone()))},checkView:function(){a.isDefined(g.view.moment)||(g.view.moment=moment().locale(g.locale)),g.limits.isAfterOrEqualMin(g.view.moment)||(g.view.moment=g.minDateMoment.clone()),g.limits.isBeforeOrEqualMax(g.view.moment)||(g.view.moment=g.maxDateMoment.clone()),g.view.update()}},g.views={all:["decade","year","month","day","hour","minute"],formats:{decade:"Y{1,2}(?!Y)|YYYY|[Ll]{1,4}(?!T)",year:"M{1,4}(?![Mo])|Mo|Q",month:"[Dd]{1,4}(?![Ddo])|DDDo|[Dd]o|[Ww]{1,2}(?![Wwo])|[Ww]o|[Ee]|L{1,2}(?!T)|l{1,2}",day:"[Hh]{1,2}|LTS?",hour:"m{1,2}|[Ll]{3,4}|LT(?!S)",minute:"s{1,2}|S{1,}|X|LTS"},detectMinMax:function(){var b,c;a.forEach(g.views.formats,function(d,e){var f=new RegExp("("+d+")(?![^[]*])","g");g.format.match(f)&&(a.isDefined(b)||(b=e),c=e)}),b=a.isDefined(b)?Math.max(0,g.views.all.indexOf(b)):0,c=a.isDefined(c)?Math.min(g.views.all.length-1,g.views.all.indexOf(c)):g.views.all.length-1,b>g.views.all.indexOf(g.minView)&&(g.minView=g.views.all[b]),c<g.views.all.indexOf(g.maxView)&&(g.maxView=g.views.all[c])}},g.view={isOpen:!1,selected:g.startView,update:function(){g.view.value=g.momentToDate(g.view.moment)},toggle:function(){g.view.isOpen?g.view.close():g.view.open()},open:function(){a.forEach(e[0].querySelectorAll(".moment-picker-container.open"),function(b){((a.element(b).scope().view||{}).close||a.noop)()}),g.view.isOpen=!0},close:function(){g.view.isOpen=!1,g.view.selected=g.startView},unit:function(){return"decade"==g.view.selected?10:1},precision:function(){return g.view.selected.replace("decade","year")},title:"",previous:{selectable:!0,label:c.trustAsHtml(g.leftArrow),selectable:!0,set:function(){g.view.previous.selectable&&g.view.update(g.view.moment.subtract(g.view.unit(),g.view.precision()).toDate())}},next:{selectable:!0,label:c.trustAsHtml(g.rightArrow),set:function(){g.view.next.selectable&&g.view.update(g.view.moment.add(g.view.unit(),g.view.precision()).toDate())}},setParentView:function(){g.view.change(g.views.all[Math.max(0,g.views.all.indexOf(g.view.selected)-1)])},render:function(){var a=g.view.moment.clone().startOf(g.view.precision()).subtract(g.view.unit(),g.view.precision()),b=g.view.moment.clone().endOf(g.view.precision()).add(g.view.unit(),g.view.precision());g.view.previous.selectable=g.limits.isAfterOrEqualMin(a,g.view.precision()),g.view.previous.label=c.trustAsHtml(g.view.previous.selectable?g.leftArrow:" "),g.view.next.selectable=g.limits.isBeforeOrEqualMax(b,g.view.precision()),g.view.next.label=c.trustAsHtml(g.view.next.selectable?g.rightArrow:" "),g.view.title=g[g.view.selected+"View"].render()},change:function(a){var b=g.views.all.indexOf(a),c=g.views.all.indexOf(g.minView),d=g.views.all.indexOf(g.maxView);0>b||b>d?(g.valueUpdate(g.valueMoment=g.view.moment.clone()),g.view.close()):b>=c&&(g.view.selected=a)}},g.decadeView={fourYears:{},render:function(){var a=g.view.moment.clone();firstYear=10*Math.floor(a.year()/10)-1,lastYear=firstYear+11,a.year(firstYear),g.decadeView.fourYears={};for(var b=0;12>b;b++){var c=Math.floor(b/4),d=g.limits.isSelectable(a,"year");g.decadeView.fourYears[c]||(g.decadeView.fourYears[c]=[]),g.decadeView.fourYears[c].push({label:a.format(f.yearsFormat),year:a.year(),"class":!d||[0,11].indexOf(b)>=0?"disabled":a.isSame(g.valueMoment,"year")?"selected":"",selectable:d}),a.add(1,"years")}return[a.subtract(2,"years").format("YYYY"),a.subtract(9,"years").format("YYYY")].reverse().join(" - ")},setYear:function(a){a.selectable&&(g.view.update(g.view.moment.year(a.year)),g.view.change("year"))}},g.yearView={fourMonths:{},render:function(){var a=g.view.moment.clone().startOf("year"),b=moment.monthsShort();return g.yearView.fourMonths={},b.forEach(function(b,c){var d=Math.floor(c/4),e=g.limits.isSelectable(a,"month");g.yearView.fourMonths[d]||(g.yearView.fourMonths[d]=[]),g.yearView.fourMonths[d].push({label:a.format(f.monthsFormat),year:a.year(),month:a.month(),"class":e?a.isSame(g.valueMoment,"month")?"selected":"":"disabled",selectable:e}),a.add(1,"months")}),g.view.moment.format("YYYY")},setMonth:function(a){a.selectable&&(g.view.update(g.view.moment.year(a.year).month(a.month)),g.view.change("month"))}},g.monthView={days:function(){for(var a=[],b=moment().locale(g.locale).startOf("week"),c=0;7>c;c++)a.push(b.format("dd")),b.add(1,"days");return a}(),weeks:[],render:function(){var b=g.view.moment.month(),c=g.view.moment.clone().startOf("month").startOf("week"),d=(g.view.moment.clone().endOf("month").endOf("week"),c.week()),e=d+5;weeks={},g.monthView.weeks=[];for(var h=d;e>=h;h++)weeks[h]="0000000".split("").map(function(){var a=g.limits.isSelectable(c,"day"),d={label:c.format(f.daysFormat),year:c.year(),date:c.date(),month:c.month(),"class":a&&c.month()==b?c.isSame(g.valueMoment,"day")?"selected":"":"disabled",selectable:a};return c.add(1,"days"),d});return a.forEach(weeks,function(a){g.monthView.weeks.push(a)}),g.view.moment.format("MMMM YYYY")},setDate:function(a){a.selectable&&(g.view.update(g.view.moment.year(a.year).month(a.month).date(a.date)),g.view.change("day"))}},g.dayView={threeHours:[],render:function(){var a=g.view.moment.clone().startOf("day");moment.localeData().longDateFormat("LT").replace(/[aA]/,"");g.dayView.threeHours=[];for(var b=0;24>b;b++){var c=Math.floor(b/4),d=g.limits.isSelectable(a,"hour");g.dayView.threeHours[c]||(g.dayView.threeHours[c]=[]),g.dayView.threeHours[c].push({label:a.format(f.hoursFormat),year:a.year(),month:a.month(),date:a.date(),hour:a.hour(),"class":d?a.isSame(g.valueMoment,"hour")?"selected":"":"disabled",selectable:d}),a.add(1,"hours")}return g.view.moment.format("LL")},setHour:function(a){a.selectable&&(g.view.update(g.view.moment.year(a.year).month(a.month).date(a.date).hour(a.hour)),g.view.change("hour"))}},g.hourView={minutes:[],render:function(){var a=0,b=g.view.moment.clone().startOf("hour");g.hourView.minutes=[];for(var c=0;60>c;c+=f.minutesStep){var d=Math.floor(a/4),e=g.limits.isSelectable(b,"minute");g.hourView.minutes[d]||(g.hourView.minutes[d]=[]),g.hourView.minutes[d].push({label:b.format(f.minutesFormat),year:b.year(),month:b.month(),date:b.date(),hour:b.hour(),minute:b.minute(),"class":e?b.isSame(g.valueMoment,"minute")?"selected":"":"disabled",selectable:e}),a++,b.add(f.minutesStep,"minutes")}return g.view.moment.clone().startOf("hour").format("lll")},setMinute:function(a){a.selectable&&(g.view.update(g.view.moment.year(a.year).month(a.month).date(a.date).hour(a.hour).minute(a.minute)),g.view.change("minute"))}},g.minuteView={seconds:[],render:function(){var a=0,b=g.view.moment.clone().startOf("minute");g.minuteView.seconds=[];for(var c=0;60>c;c+=f.secondsStep){var d=Math.floor(a/6),e=g.limits.isSelectable(b,"second");g.minuteView.seconds[d]||(g.minuteView.seconds[d]=[]),g.minuteView.seconds[d].push({label:b.format(f.secondsFormat),year:b.year(),month:b.month(),date:b.date(),hour:b.hour(),minute:b.minute(),second:b.second(),"class":e?b.isSame(g.valueMoment,"second")?"selected":"":"disabled",selectable:e}),a++,b.add(f.secondsStep,"seconds")}return g.view.moment.clone().startOf("minute").format("lll")},setSecond:function(a){a.selectable&&(g.view.update(g.view.moment.year(a.year).month(a.month).date(a.date).hour(a.hour).minute(a.minute).second(a.second)),g.view.change("second"))}},g.picker=a.element('<span class="moment-picker"></span>'),h.after(g.picker),g.contents=h.addClass("moment-picker-contents").removeAttr("moment-picker"),g.container=d(g.template)(g),g.picker.append(g.contents),g.picker.append(g.container),g.views.detectMinMax(),g.limits.checkView(),g.$watch("model",function(b,c){a.isDefined(b)&&(g.valueMoment=moment(b,g.format,g.locale),g.valueMoment.isValid()?(g.view.moment=g.valueMoment.clone(),g.view.update()):g.valueMoment=void 0),g.valueUpdate(g.valueMoment),g.limits.checkValue()}),g.$watch("value",function(c,d){if(a.isDefined(g.valueMoment)){var e=g.model,f=g.valueMoment.format(g.format);f!=e&&b(function(){g.view.update(g.view.moment=g.valueMoment.clone()),g.model=f,a.isFunction(g.change)&&g.change({newValue:f,oldValue:e})})}}),g.$watch("[view.selected, view.value]",g.view.render,!0),g.$watch("[minView, maxView]",function(){g.views.detectMinMax(),g.startView=g.views.all[Math.max(Math.min(g.views.all.indexOf(g.startView),g.views.all.indexOf(g.maxView)),g.views.all.indexOf(g.minView))],g.view.selected=g.startView}),g.$watch("[minDate, maxDate]",function(){a.forEach(["minDate","maxDate"],function(b){a.isDefined(g[b])&&(g[b+"Moment"]=moment(g[b],g.format,g.locale),g[b+"Moment"].isValid()||(g[b+"Moment"]=void 0))}),g.limits.checkValue(),g.limits.checkView(),g.view.render()},!0),e.on("click",function(){g.view.isOpen&&b(g.view.close)}),g.container.on("click",function(a){a.stopPropagation()}),g.contents.on("click",function(a){a.stopPropagation(),g.view.isOpen||b(g.view.open)}),a.element(g.contents[0].querySelector("input")).on("focus",function(){g.view.isOpen||b(g.view.open)})},g}();a.module("moment-picker",[]).provider("momentPicker",[function(){return new g}]).directive("momentPicker",["$timeout","$sce","$compile","$document","momentPicker",function(a,b,c,d,e){return new h(a,b,c,d,e)}])}(window.angular);
\ No newline at end of file