/*! Angular Moment Picker - v0.8.0 - https://github.com/indrimuska/angular-moment-picker - (c) 2015 Indri Muska - MIT */
!function(a){"use strict";var b,c,d,e,f,g={up:38,down:40,left:37,right:39,escape:27,enter:13},h=function(){function b(){c={locale:"en",format:"L LTS",minView:"decade",maxView:"minute",startView:"year",autoclose:!0,today:!1,keyboard:!1,showHeader:!0,leftArrow:"←",rightArrow:"→",yearsFormat:"YYYY",monthsFormat:"MMM",daysFormat:"D",hoursFormat:"HH:[00]",hoursStart:0,hoursEnd:23,minutesStep:5,minutesStart:0,minutesEnd:59,secondsFormat:"ss",secondsStep:1,secondsStart:0,secondsEnd:59}}var c;return b.prototype.options=function(b){return a.extend(c,b),a.copy(c)},b.prototype.$get=function(){return c},b}(),i=function(){function h(a){var b,c,d,e;if(a)return a.getClientRects().length?(d=a.getBoundingClientRect(),d.width||d.height?(e=a.ownerDocument,c=null!==e&&e===e.window?a:9===e.nodeType&&e.defaultView,b=e.documentElement,{top:d.top+c.pageYOffset-b.clientTop,left:d.left+c.pageXOffset-b.clientLeft}):d):{top:0,left:0}}function i(a,g,h,i,j){this.restrict="AE",this.require="?ngModel",this.transclude=!0,this.scope={value:"=?momentPicker",model:"=?ngModel",locale:"@?",format:"@?",minView:"@?",maxView:"@?",startView:"@?",minDate:"=?",maxDate:"=?",disabled:"=?disable",autoclose:"=?",today:"=?",keyboard:"=?",additions:"=?",change:"&?",selectable:"&?"},this.template='
',b=a,c=g,d=h,e=i,f=j}return i.prototype.$inject=["$timeout","$sce","$log","$window","momentPicker"],i.prototype.link=function(i,j,k,l,m){m(function(m){a.forEach(["locale","format","minView","maxView","startView","autoclose","today","keyboard","showHeader","leftArrow","rightArrow","additions"],function(b){a.isDefined(i[b])||(i[b]=f[b]),a.isDefined(k[b])||(k[b]=i[b])}),k.ngModel||(l={}),i.utility={isValidMoment:function(a){return moment.isMoment(a)&&a.isValid()},toValue:function(a){var b=a;return i.utility.isValidMoment(a)||(b=i.utility.toMoment(a)),i.utility.momentToValue(b)},toMoment:function(a){var b=moment(a,i.format,i.locale);return i.utility.isValidMoment(b)||(b=void 0),b},momentToValue:function(a){return i.utility.isValidMoment(a)?i.format?a.format(i.format):a.valueOf():void 0},valueToMoment:function(a){return a?i.format?moment(a,i.format,i.locale):moment(a):void 0},setValue:function(a){var b=i.utility.isValidMoment(a)?a.clone():i.utility.valueToMoment(a),c=i.utility.momentToValue(b);i.model=b,l.$modelValue=b,k.ngModel!=k.momentPicker&&(i.value=c),k.ngModel&&(l.$setViewValue(c),l.$render())}},i.limits={minDate:void 0,maxDate:void 0,isAfterOrEqualMin:function(b,c){return!a.isDefined(i.limits.minDate)||b.isAfter(i.limits.minDate,c)||b.isSame(i.limits.minDate,c)},isBeforeOrEqualMax:function(b,c){return!a.isDefined(i.limits.maxDate)||b.isBefore(i.limits.maxDate,c)||b.isSame(i.limits.maxDate,c)},isSelectable:function(b,c){var e=!0;try{a.isFunction(i.selectable)&&(e=i.selectable({date:b,type:c}))}catch(f){d.error(f)}return i.limits.isAfterOrEqualMin(b,c)&&i.limits.isBeforeOrEqualMax(b,c)&&e},checkValue:function(){a.isDefined(l.$modelValue)&&(i.limits.isAfterOrEqualMin(l.$modelValue)||i.utility.setValue(i.limits.minDate),i.limits.isBeforeOrEqualMax(l.$modelValue)||i.utility.setValue(i.limits.maxDate))},checkView:function(){a.isDefined(i.view.moment)||(i.view.moment=moment().locale(i.locale)),i.limits.isAfterOrEqualMin(i.view.moment)||(i.view.moment=i.limits.minDate.clone()),i.limits.isBeforeOrEqualMax(i.view.moment)||(i.view.moment=i.limits.maxDate.clone()),i.view.update()}},i.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(){if(i.format){var b,c;a.forEach(i.views.formats,function(d,e){var f=new RegExp("("+d+")(?![^[]*])","g");i.format.match(f)&&(a.isDefined(b)||(b=e),c=e)}),b=a.isDefined(b)?Math.max(0,i.views.all.indexOf(b)):0,c=a.isDefined(c)?Math.min(i.views.all.length-1,i.views.all.indexOf(c)):i.views.all.length-1,b>i.views.all.indexOf(i.minView)&&(i.minView=i.views.all[b]),c0&&c>g/2&&i.picker.addClass("top"),d+a.offsetWidth>f&&i.picker.addClass("left")}},keydown:function(a){var b=i.view.selected+"View",c={decade:"year",year:"month",month:"day",day:"hour",hour:"minute",minute:"second"}[i.view.selected],d=f[c+"sStep"]||1,e=[g.up,g.left].indexOf(a.keyCode)>=0?"subtract":"add",h=function(a){var f=a?i[b].perLine:1,g=i.view.moment.clone()[e](d*f,c);i.limits.isSelectable(g,c)&&(i.view.moment=g,i.view.update(),i.view.render())};switch(a.keyCode){case g.up:case g.down:a.preventDefault(),i.view.isOpen?h(!0):i.view.open();break;case g.left:case g.right:if(!i.view.isOpen)break;a.preventDefault(),h();break;case g.enter:if(!i.view.isOpen)break;i.view.change(c),a.preventDefault();break;case g.escape:i.view.toggle()}},unit:function(){return"decade"==i.view.selected?10:1},precision:function(){return i.view.selected.replace("decade","year")},title:"",previous:{label:c.trustAsHtml(i.leftArrow),selectable:!0,set:function(){i.view.previous.selectable&&(i.view.moment.subtract(i.view.unit(),i.view.precision()),i.view.update())}},next:{selectable:!0,label:c.trustAsHtml(i.rightArrow),set:function(){i.view.next.selectable&&(i.view.moment.add(i.view.unit(),i.view.precision()),i.view.update())}},setParentView:function(){i.view.change(i.views.all[Math.max(0,i.views.all.indexOf(i.view.selected)-1)])},render:function(){var a=i.view.moment.clone().startOf(i.view.precision()).subtract(i.view.unit(),i.view.precision()),b=i.view.moment.clone().endOf(i.view.precision()).add(i.view.unit(),i.view.precision());i.view.previous.selectable=i.limits.isAfterOrEqualMin(a,i.view.precision()),i.view.previous.label=c.trustAsHtml(i.view.previous.selectable?i.leftArrow:" "),i.view.next.selectable=i.limits.isBeforeOrEqualMax(b,i.view.precision()),i.view.next.label=c.trustAsHtml(i.view.next.selectable?i.rightArrow:" "),i.view.title=i[i.view.selected+"View"].render()},change:function(a){var c=i.views.all.indexOf(a),d=i.views.all.indexOf(i.minView),e=i.views.all.indexOf(i.maxView);0>c||c>e?(i.utility.setValue(i.view.moment),i.autoclose&&b(i.view.close)):c>=d&&(i.view.selected=a)}},i.decadeView={perLine:4,rows:{},render:function(){var a=i.view.moment.clone(),b=10*Math.floor(a.year()/10)-1;a.year(b),i.decadeView.rows={};for(var c=0;12>c;c++){var d=Math.floor(c/i.decadeView.perLine),e=i.limits.isSelectable(a,"year");i.decadeView.rows[d]||(i.decadeView.rows[d]=[]),i.decadeView.rows[d].push({label:a.format(f.yearsFormat),year:a.year(),"class":[i.keyboard&&a.isSame(i.view.moment,"year")?"highlighted":"",!e||[0,11].indexOf(c)>=0?"disabled":i.utility.isValidMoment(l.$modelValue)&&a.isSame(l.$modelValue,"year")?"selected":""].join(" ").trim(),selectable:e}),a.add(1,"years")}return[a.subtract(2,"years").format("YYYY"),a.subtract(9,"years").format("YYYY")].reverse().join(" - ")},setYear:function(a){a.selectable&&(i.view.moment.year(a.year),i.view.update(),i.view.change("year"))}},i.yearView={perLine:4,rows:{},render:function(){var a=i.view.moment.clone().startOf("year"),b=moment.monthsShort();return i.yearView.rows={},b.forEach(function(b,c){var d=Math.floor(c/i.yearView.perLine),e=i.limits.isSelectable(a,"month");i.yearView.rows[d]||(i.yearView.rows[d]=[]),i.yearView.rows[d].push({label:a.format(f.monthsFormat),year:a.year(),month:a.month(),"class":[i.keyboard&&a.isSame(i.view.moment,"month")?"highlighted":"",e?i.utility.isValidMoment(l.$modelValue)&&a.isSame(l.$modelValue,"month")?"selected":"":"disabled"].join(" ").trim(),selectable:e}),a.add(1,"months")}),i.view.moment.format("YYYY")},setMonth:function(a){a.selectable&&(i.view.moment.year(a.year).month(a.month),i.view.update(),i.view.change("month"))}},i.monthView={perLine:moment.weekdays().length,days:moment.weekdays().map(function(a,b){return moment().locale(i.locale).startOf("week").add(b,"day").format("dd")}),rows:[],render:function(){var b=i.view.moment.month(),c=i.view.moment.clone().startOf("month").startOf("week").hour(12),d={},e=c.week(),g=e+5;i.monthView.rows=[];for(var h=e;g>=h;h++)d[h]=Array.apply(null,Array(i.monthView.perLine)).map(function(){var a=i.limits.isSelectable(c,"day"),d={label:c.format(f.daysFormat),year:c.year(),date:c.date(),month:c.month(),"class":[i.keyboard&&c.isSame(i.view.moment,"day")?"highlighted":"",i.today&&c.isSame(new Date,"day")?"today":"",a&&c.month()==b?i.utility.isValidMoment(l.$modelValue)&&c.isSame(l.$modelValue,"day")?"selected":"":"disabled"].join(" ").trim(),selectable:a};return c.add(1,"days"),d});return a.forEach(d,function(a){i.monthView.rows.push(a)}),i.view.moment.format("MMMM YYYY")},setDay:function(a){a.selectable&&(i.view.moment.year(a.year).month(a.month).date(a.date),i.view.update(),i.view.change("day"))}},i.dayView={perLine:4,rows:[],render:function(){var a=i.view.moment.clone().startOf("day").hour(f.hoursStart);i.dayView.rows=[];for(var b=0;b<=f.hoursEnd-f.hoursStart;b++){var c=Math.floor(b/i.dayView.perLine),d=i.limits.isSelectable(a,"hour");i.dayView.rows[c]||(i.dayView.rows[c]=[]),i.dayView.rows[c].push({index:b,label:a.format(f.hoursFormat),year:a.year(),month:a.month(),date:a.date(),hour:a.hour(),"class":[i.keyboard&&a.isSame(i.view.moment,"hour")?"highlighted":"",d?i.utility.isValidMoment(l.$modelValue)&&a.isSame(l.$modelValue,"hour")?"selected":"":"disabled"].join(" ").trim(),selectable:d}),a.add(1,"hours")}return i.view.moment.format("LL")},setHour:function(a){a.selectable&&(i.view.moment.year(a.year).month(a.month).date(a.date).hour(a.hour),i.view.update(),i.view.change("hour"))}},i.hourView={perLine:4,rows:[],render:function(){var a=0,b=i.view.moment.clone().startOf("hour").minute(f.minutesStart),c=f.minutesFormat||moment.localeData(i.locale).longDateFormat("LT").replace(/[aA]/,"");i.hourView.rows=[];for(var d=0;d<=f.minutesEnd-f.minutesStart;d+=f.minutesStep){var e=Math.floor(a/i.hourView.perLine),g=i.limits.isSelectable(b,"minute");i.hourView.rows[e]||(i.hourView.rows[e]=[]),i.hourView.rows[e].push({label:b.format(c),year:b.year(),month:b.month(),date:b.date(),hour:b.hour(),minute:b.minute(),"class":[i.keyboard&&b.isSame(i.view.moment,"minute")?"highlighted":"",g?i.utility.isValidMoment(l.$modelValue)&&b.isSame(l.$modelValue,"minute")?"selected":"":"disabled"].join(" ").trim(),selectable:g}),a++,b.add(f.minutesStep,"minutes")}return i.keyboard&&i.hourView.highlightClosest(),i.view.moment.clone().startOf("hour").format("lll")},setMinute:function(a){a.selectable&&(i.view.moment.year(a.year).month(a.month).date(a.date).hour(a.hour).minute(a.minute),i.view.update(),i.view.change("minute"))},highlightClosest:function(){var b,c=[];a.forEach(i.hourView.rows,function(b){a.forEach(b,function(a){Math.abs(a.minute-i.view.moment.minute())Math.abs(b.minute-i.view.moment.minute())})[0],b&&b.minute-i.view.moment.minute()!=0&&(i.view.moment.year(b.year).month(b.month).date(b.date).hour(b.hour).minute(b.minute),i.view.update(),b.selectable&&(b["class"]=(b["class"]+" highlighted").trim()))}},i.minuteView={perLine:6,rows:[],render:function(){var a=0,b=i.view.moment.clone().startOf("minute").second(f.secondsStart);i.minuteView.rows=[];for(var c=0;c<=f.secondsEnd-f.secondsStart;c+=f.secondsStep){var d=Math.floor(a/i.minuteView.perLine),e=i.limits.isSelectable(b,"second");i.minuteView.rows[d]||(i.minuteView.rows[d]=[]),i.minuteView.rows[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":[i.keyboard&&b.isSame(i.view.moment,"second")?"highlighted":"",e?i.utility.isValidMoment(l.$modelValue)&&b.isSame(l.$modelValue,"second")?"selected":"":"disabled"].join(" ").trim(),selectable:e}),a++,b.add(f.secondsStep,"seconds")}return i.keyboard&&i.minuteView.highlightClosest(),i.view.moment.clone().startOf("minute").format("lll")},setSecond:function(a){a.selectable&&(i.view.moment.year(a.year).month(a.month).date(a.date).hour(a.hour).minute(a.minute).second(a.second),i.view.update(),i.view.change("second"))},highlightClosest:function(){var b,c=[];a.forEach(i.minuteView.rows,function(b){a.forEach(b,function(a){Math.abs(a.second-i.view.moment.second())Math.abs(b.second-i.view.moment.second())})[0],b&&b.second-i.view.moment.second()!=0&&(i.view.moment.year(b.year).month(b.month).date(b.date).hour(b.hour).minute(b.minute).second(b.second),i.view.update(),b.selectable&&(b["class"]=(b["class"]+" highlighted").trim()))}},i.picker=a.element(j[0].querySelectorAll(".moment-picker")),j.after(i.picker),i.contents=a.element(i.picker[0].querySelectorAll(".moment-picker-contents")),i.container=a.element(i.picker[0].querySelectorAll(".moment-picker-container")),i.contents.append(j.append(m)),i.input="input"!=i.contents[0].tagName.toLowerCase()&&i.contents[0].querySelectorAll("input").length>0?a.element(i.contents[0].querySelectorAll("input")):a.element(i.contents[0]),i.input.addClass("moment-picker-input").attr("tabindex",0),i.views.detectMinMax(),i.limits.checkView(),k.ngModel&&(l.$parsers.push(function(a){return i.utility.valueToMoment(a)}),l.$formatters.push(function(a){return i.utility.momentToValue(a)})),i.$watch(function(){return i.utility.momentToValue(l.$modelValue)},function(c,d){if(c!=d){var e=i.utility.valueToMoment(c);if(i.utility.setValue(e),i.limits.checkValue(),i.view.moment=(e||moment()).clone(),i.view.update(),i.view.render(),a.isFunction(i.change)){var f=i.utility.valueToMoment(d);b(function(){i.change({newValue:e,oldValue:f})},0,!1)}}}),i.$watchGroup(["view.selected","view.value"],i.view.render),i.$watchGroup(["minView","maxView"],function(){i.views.detectMinMax(),i.startView=i.views.all[Math.max(Math.min(i.views.all.indexOf(i.startView),i.views.all.indexOf(i.maxView)),i.views.all.indexOf(i.minView))],i.view.selected=i.startView}),i.$watchGroup([function(){return i.utility.toValue(i.minDate)},function(){return i.utility.toValue(i.maxDate)}],function(){a.forEach(["minDate","maxDate"],function(a){i.limits[a]=i.utility.toMoment(i[a])}),i.limits.checkValue(),i.limits.checkView(),i.view.render()},!0),i.$watch("locale",function(b,c){a.isDefined(c)&&b!=c&&(i.isValidMoment(l.$modelValue)&&i.utility.setValue(l.$modelValue.locale(b)),i.isValidMoment(i.limits.minDate)&&(i.limits.minDate=i.limits.minDate.locale(b)),i.isValidMoment(i.limits.maxDate)&&(i.limits.maxDate=i.limits.maxDate.locale(b)),i.view.render())}),i.focusInput=function(a){a.preventDefault(),i.input[0].focus()},i.input.on("focus click",function(){i.$evalAsync(i.view.open)}).on("blur",function(){i.$evalAsync(i.view.close)}).on("keydown",function(a){i.keyboard&&(a.preventDefault(),i.$evalAsync(function(){i.view.keydown(a)}))}),i.contents.on("mousedown",i.focusInput),i.container.on("mousedown",i.focusInput),a.element(e).on("resize scroll",i.view.position)})},i}();a.module("moment-picker",[]).provider("momentPicker",[function(){return new h}]).directive("momentPicker",["$timeout","$sce","$log","$window","momentPicker",function(a,b,c,d,e){return new i(a,b,c,d,e)}])}(window.angular);