-
Notifications
You must be signed in to change notification settings - Fork 29
/
datetime.js
1 lines (1 loc) · 24.1 KB
/
datetime.js
1
!function(L){"use strict";function e(){if(!(this instanceof e))return new e}L.module("datetime",[]),L.module("datetime").constant("datetimePlaceholder",{year:"(year)",yearShort:"(year)",month:"(month)",date:"(date)",day:"(day)",hour:"(hour)",hour12:"(hour12)",minute:"(minute)",second:"(second)",millisecond:"(millisecond)",ampm:"(AM/PM)",week:"(week)"});var u={exports:{}};!function(e){void 0!==u&&(u.exports=e);var s="listeners",n={on:r,once:i,off:o,emit:a};function t(e){for(var t in n)e[t]=n[t];return e}function r(e,t){return l(this,e).push(t),this}function i(e,t){var n=this;return r.originalListener=t,l(n,e).push(r),n;function r(){o.call(n,e,r),t.apply(this,arguments)}}function o(e,t){var n,r=this;if(arguments.length){if(t){if(n=l(r,e,!0)){if(!(n=n.filter(i)).length)return o.call(r,e);r[s][e]=n}}else if((n=r[s])&&(delete n[e],!Object.keys(n).length))return o.call(r)}else delete r[s];return r;function i(e){return e!==t&&e.originalListener!==t}}function a(e,t){var n=this,r=l(n,e,!0);if(!r)return!1;var i=arguments.length;if(1===i)r.forEach(o);else if(2===i)r.forEach(a);else{var s=Array.prototype.slice.call(arguments,1);r.forEach(u)}return!!r.length;function o(e){e.call(n)}function a(e){e.call(n,t)}function u(e){e.apply(n,s)}}function l(e,t,n){if(!n||e[s]){var r=e[s]||(e[s]={});return r[t]||(r[t]=[])}}t(e.prototype),e.mixin=t}(e);var t=u.exports,S=function(e,t,n){var r;if((e=""+e).length>n)e=e.substr(e.length-n);else if(e.length<t)for(r=e.length;r<t;r++)e="0"+e;return e};function f(e,t){e.prototype=Object.create(t.prototype),(e.prototype.constructor=e).__proto__=t}function m(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function a(e,t,n){for(var r=0,i=e.toUpperCase(),s=n.toUpperCase();i[t+r]&&i[t+r]==s[r];)r++;return e.substr(t,r)}function l(e,t){var n=(e=e.substring(t)).match(/^\d+/);return n&&n[0]}function h(e,t,n){var r=i(e,t,n);return r.err&&"static"!=t.type&&e.startsWith(t.placeholder,n)&&(1<r.err||r.viewValue.length<=t.placeholder.length)?{empty:!0,viewValue:t.placeholder}:r}function i(e,t,n){var r,i,s,o;if("static"==t.type)return e.startsWith(t.value,n)?{viewValue:t.value}:{err:2,code:"TEXT_MISMATCH",message:"Pattern value mismatch"};if("number"==t.type)return null==(s=l(e,n))?{err:1,code:"NUMBER_MISMATCH",message:"Invalid number",viewValue:""}:s.length<t.minLength?{err:1,code:"NUMBER_TOOSHORT",message:"The length of number is too short",value:+s,viewValue:s,properValue:S(+s,t.minLength,t.maxLength)}:(s.length>t.maxLength&&(s=s.substr(0,t.maxLength)),+s<t.min?{err:1,code:"NUMBER_TOOSMALL",message:"The number is too small",value:+s,viewValue:s,properValue:S(t.min,t.minLength,t.maxLength)}:s.length>t.minLength&&"0"==s[0]?{err:1,code:"LEADING_ZERO",message:"The number has too many leading zero",value:+s,viewValue:s,properValue:S(+s,t.minLength,t.maxLength)}:+s>t.max?{err:1,code:"NUMBER_TOOLARGE",message:"The number is too large",value:+s,viewValue:s,properValue:S(t.max,t.minLength,t.maxLength)}:{value:+s,viewValue:s});if("select"!=t.type)throw"Unknown token type: "+t.type;for(i="",o=0;o<t.select.length;o++)(r=a(e,n,t.select[o]))&&r.length>i.length&&(s=o,i=r);return i?i!=t.select[s]?{err:1,code:"SELECT_INCOMPLETE",message:"Incomplete select",value:s+1,viewValue:i,selected:t.select[s]}:{value:s+1,viewValue:i}:{err:1,code:"SELECT_MISMATCH",message:"Invalid select",viewValue:""}}function g(e,t){var n,r,i=0,s=[],o=e,a=Array.isArray(o),u=0;for(o=a?o:o[Symbol.iterator]();;){if(a){if(u>=o.length)break;n=o[u++]}else{if((u=o.next()).done)break;n=u.value}if((r=h(t,n.token,i)).node=n,r.pos=i,r.token=n.token,2<=r.err)throw r.text=t,r;i+=r.viewValue.length,s.push(r)}var l=s[s.length-1];if(l.pos+l.viewValue.length<t.length)throw{code:"TEXT_TOOLONG",message:"Text is too long",text:t};return s}function c(e,t){if("static"==t.type)return{viewValue:t.value};var n=t.extract(e);if("number"==t.type)return{value:n,viewValue:S(n,t.minLength,t.maxLength)};if("select"==t.type)return{value:n,viewValue:t.select[n-1]};throw"Unknown type to format: "+t.type}function p(e,t,n){var r,i,s=[],o=t,a=Array.isArray(o),u=0;for(o=a?o:o[Symbol.iterator]();;){if(a){if(u>=o.length)break;i=o[u++]}else{if((u=o.next()).done)break;i=u.value}r=c(e,i.token),"static"!=i.token.type&&i.empty&&!n&&(r.value=null,r.viewValue=i.token.placeholder),s.push(r)}return s}var d=function(){function e(e,t){this.parser=e,this.token=t,this.value=null,this.viewValue=t.value,this.offset=0,this.next=null,this.prev=null,this.nextEdit=null,this.prevEdit=null,this.empty=!0}var t=e.prototype;return t.unset=function n(){"static"==this.token.type||this.parser.noEmpty||(this.empty=!0,this.parser.setValue(this.parser.value,!1))},t.parse=function i(e,t){void 0===t&&(t=0);var n=h(e,this.token,t);if(n.err)throw n.node=this,n.token=this.token,n;if(this.parser.noEmpty&&n.empty)throw{code:"NOT_INIT_FORBIDDEN",message:"Empty node is forbidden",node:this};if(n.empty)this.unset();else{this.empty=!1;var r=v(this.parser.copyValue(this.parser.value),this.token,n.value,this.parser);this.parser.setValue(r,!1)}},t.add=function s(e){var t,n,r,i=this.parser.copyValue(this.parser.value);this.empty=!1,i=o(i,this.token,e,this.parser),t=this.token.extract(i),"number"==this.token.type?(n=this.token.min,r=this.token.max):"select"==this.token.type&&(n=1,r=this.token.select.length),t<n&&(i=v(i,this.token,n,this.parser)),r<t&&(i=v(i,this.token,r,this.parser)),this.parser.setValue(i,!1)},e}();function o(e,t,n,r){return"object"==typeof e?(t.add(e,n,r),e):t.add(e,n,r)}function v(e,t,n,r){return"object"==typeof e?(t.restore(e,n,r),e):t.restore(e,n,r)}function y(e,t){var n,r,i,s=[],o=t,a=Array.isArray(o),u=0;for(o=a?o:o[Symbol.iterator]();;){if(a){if(u>=o.length)break;n=o[u++]}else{if((u=o.next()).done)break;n=u.value}s.push(new d(e,n))}for(r=0;r<s.length;r++)s[r].next=s[r+1]||null,s[r].prev=s[r-1]||null;for(i=null,r=0;r<s.length;r++)s[r].prevEdit=i,"static"!=s[r].token.type&&(i=s[r]);for(i=null,r=s.length-1;0<=r;r--)s[r].nextEdit=i,"static"!=s[r].token.type&&(i=s[r]);return s}function x(e){return e}function T(e){var t=new Map,n=e,r=Array.isArray(n),i=0;for(n=r?n:n[Symbol.iterator]();;){var s;if(r){if(i>=n.length)break;s=n[i++]}else{if((i=n.next()).done)break;s=i.value}var o=s,a=t.get(o.token.name);a||(a=[],t.set(o.token.name,a)),a.push(o)}return t}var n=function(t){function e(){var e;return(e=t.call(this)||this)._constructor.apply(m(e),arguments),e.initialize(),e}f(e,t);var n=e.prototype;return n._constructor=function u(e){var t=e.tokens,n=e.noEmpty,r=void 0!==n&&n,i=e.value,s=e.text,o=e.copyValue,a=void 0===o?x:o;if(!t||!t.length)throw new Error("option.tokens is required");this.tokens=t,this.nodes=y(this,t),this.nameMap=T(this.nodes),this.value=i,this.text=s,this.noEmpty=r,this.copyValue=a,this.err=!1},n.initialize=function r(){this.setValue(this.value)},n.parse=function d(e){if(!e)throw{code:"EMPTY",message:"The input is empty",oldText:this.text};var t,n;t=g(this.nodes,e);var r,i=[];for(r=this.err?g(this.nodes,this.text):this.nodes,n=0;n<t.length;n++)t[n].empty||t[n].viewValue==r[n].viewValue||(t[n].token=this.nodes[n].token,i.push(t[n]));var s=t.filter(function(e){return e.empty}),o=t.filter(function(e){return e.err});for(n=0;n<t.length;n++)this.nodes[n].value=t[n].value,this.nodes[n].viewValue=t[n].viewValue,this.nodes[n].offset=t[n].pos,this.nodes[n].empty=t[n].empty;if(o.length)throw this.err=!0,o[0];this.err=!1,i.sort(function(e,t){return t.empty?-1:e.empty?1:(t.token.prior||0)-(e.token.prior||0)});for(var a,u=this.copyValue(this.value),l=0,h=i;l<h.length;l++)u=v(u,(a=h[l]).token,a.value,this);var c=p(u,t).map(function(e){return e.viewValue}).join("");if(e!=c)throw this.err=!0,{code:"INCONSISTENT_INPUT",message:"Successfully parsed but the output text doesn't match the input",text:e,oldText:this.text,properText:c};if(this.text=e,this.value=u,this.emit("change",this.value),s.length)throw{code:"NOT_INIT",message:"Some nodes are empty",text:e,node:s[0]};return this},n.setValue=function o(e,t){void 0===t&&(t=!0);var n,r=p(e,this.nodes,t),i=0,s="";for(n=0;n<r.length;n++)this.nodes[n].value=r[n].value,this.nodes[n].viewValue=r[n].viewValue,this.nodes[n].offset=i,this.nodes[n].empty=!t&&this.nodes[n].empty,i+=this.nodes[n].viewValue.length,s+=this.nodes[n].viewValue;return this.value=e,this.text=s,this.emit("change",this.value),this},n.isEmpty=function i(e){var t,n;if(e)try{t=g(this.nodes,e)}catch(r){return!1}else t=this.nodes;for(n=0;n<t.length;n++)if("static"!=this.nodes[n].token.type&&!t[n].empty)return!1;return!0},n.isInit=function s(){var e,t=this.nodes,n=Array.isArray(t),r=0;for(t=n?t:t[Symbol.iterator]();;){if(n){if(r>=t.length)break;e=t[r++]}else{if((r=t.next()).done)break;e=r.value}if("static"!=e.token.type&&e.empty)return!1}return!0},n.unset=function a(){var e,t=this.nodes,n=Array.isArray(t),r=0;for(t=n?t:t[Symbol.iterator]();;){if(n){if(r>=t.length)break;e=t[r++]}else{if((r=t.next()).done)break;e=r.value}e.empty=!0}return this.setValue(this.value,!1),this},n.getText=function l(){return this.text},n.getValue=function h(){return this.value},n.getNodes=function c(e){return e?this.nameMap.get(e):this.nodes},e}(t);function w(e,t){if(t.length){var n=k(t,e).map(function(e){return e.node}),r=n[0],i=n[1];return r==i?r:e-r.offset-r.viewValue.length<=i.offset-e?r:i}}function k(e,t,n){var r,i,s;void 0===n&&(n=t);var o=e,a=Array.isArray(o),u=0;for(o=a?o:o[Symbol.iterator]();;){if(a){if(u>=o.length)break;r=o[u++]}else{if((u=o.next()).done)break;r=u.value}r.offset<=t&&(i={node:r,pos:t-r.offset}),r.offset+r.viewValue.length>=n&&!s&&(s={node:r,pos:n-r.offset})}if(!s){var l=e[e.length-1];s={node:l,pos:l.viewValue.length}}i=i||{node:e[0],pos:0};return i.pos>i.node.viewValue.length&&(i.pos=i.node.viewValue.length),[i,s]}var E=function(){function e(e,t){this.el=e,this.nodes=t,this.range={node:w(0,this.nodes),start:0,end:"end"}}var t=e.prototype;return t.selectNearestNode=function n(){var e=this.el.getSelection();e&&this.select({node:w(e.start,this.nodes),start:0,end:"end"})},t.select=function r(e){(e=Object.assign(this.range,e)).node&&this.el.setSelection(e.node.offset+e.start,e.node.offset+("end"==e.end?e.node.viewValue.length:e.end))},t.hasNext=function i(){if(this.range.node)return this.range.node.nextEdit},t.hasPrev=function s(){if(this.range.node)return this.range.node.prevEdit},t.selectNext=function o(){var e=this.hasNext(),t={start:0,end:"end"};e&&(t.node=e),this.select(t)},t.selectPrev=function a(){var e=this.hasPrev(),t={start:0,end:"end"};e&&(t.node=e),this.select(t)},t.get=function u(){if(this.nodes.length){var e=this.el.getSelection();if(e){var t=k(this.nodes,e.start,e.end),n=t[0],r=t[1];n.node==r.node&&(this.range={node:n.node,start:n.pos,end:r.pos})}}},t.atNodeEnd=function l(){if(this.range.node){this.get();var e=this.range.node.viewValue.length,t=this.range.node.token.maxLength,n="end"==this.range.start?e:this.range.start;return n==("end"==this.range.end?e:this.range.end)&&n==(null!=t?t:e)||!e}},t.atNodeStart=function h(){if(this.range.node){this.get();var e=this.range.node.viewValue.length,t="end"==this.range.start?e:this.range.start;return t==("end"==this.range.end?e:this.range.end)&&0==t}},e}(),N=n,b=function(t){function e(){var e;return(e=t.call(this)||this)._constructor.apply(m(e),arguments),e.initialize(),e}f(e,t);var n=e.prototype;return n._constructor=function r(e,t,n){void 0===n&&(n=""),this.el=e,this.tp=t,this.separators=n,this.sel=new E(e,t.getNodes().filter(function(e){return"static"!=e.token.type}))},n.initialize=function i(){var s=this;this.el.on("mousedown",function(){s.mousedown=!0}),this.el.on("focus",function(){s.mousedown||setTimeout(function(){s.sel.select({start:0,end:"end"})})}),this.el.on("click",function(){s.mousedown=!1,s.sel.selectNearestNode()}),this.el.on("input",function(){s.digest(null,s.el.val())}),this.el.on("keydown",function(e){e.altKey||e.ctrlKey||(37==e.keyCode||9==e.keyCode&&e.shiftKey&&s.sel.hasPrev()?(e.preventDefault(),s.tryFixingError(),s.sel.selectPrev()):39==e.keyCode||9==e.keyCode&&!e.shiftKey&&s.sel.hasNext()?(e.preventDefault(),s.tryFixingError(),s.sel.selectNext()):38==e.keyCode?(e.preventDefault(),s.sel.selectNearestNode(),s.sel.range.node&&s.sel.range.node.add(1),s.val(s.tp.getText()),s.sel.select({start:0,end:"end"})):40==e.keyCode?(e.preventDefault(),s.sel.selectNearestNode(),s.sel.range.node&&s.sel.range.node.add(-1),s.val(s.tp.getText()),s.sel.select({start:0,end:"end"})):36==e.keyCode||35==e.keyCode?setTimeout(function(){return s.sel.selectNearestNode()}):46==e.keyCode?s.sel.atNodeEnd()&&(e.preventDefault(),s.tryFixingError(),s.sel.selectNext()):8==e.keyCode&&s.sel.atNodeStart()&&(e.preventDefault(),s.tryFixingError(),s.sel.selectPrev()))}),this.el.on("keypress",function(e){var t=null==e.charCode?e.keyCode:e.charCode,n=String.fromCharCode(t),r=s.separators,i=s.sel.range.node;if(i&&i.next&&"static"==i.next.token.type&&(r+=i.next.viewValue[0]),r.includes(n))return e.preventDefault(),s.tryFixingError(),void s.sel.selectNext();setTimeout(function(){s.sel.atNodeEnd()&&s.sel.range.node.viewValue&&(s.tryFixingError(),s.sel.selectNext())})}),this.el.on("blur",function(){setTimeout(function(){s.tryFixingError()})}),this.tp.on("change",function(){s.err||s.inDigest||(s.val(s.tp.getText()),s.sel.select())});var e=this.el.val();e?this.digest(null,e,!0):this.val(this.tp.getText())},n.errorViewLength=function s(){return this.err&&null!=this.err.viewValue?this.err.viewValue.length:undefined},n.val=function o(e){this.el.val()!=e&&this.el.val(e),this.err=null},n.tryFixingError=function a(){this.err&&(this.err.properValue?this.digest(this.err.node,this.err.properValue,!0):this.err.node&&(this.err.node.unset(),this.digest(null,this.tp.getText())))},n.digest=function u(e,t,n){var r,u=10;for(this.inDigest=!0;u--;){this.err=null;try{e?e.parse(t):this.tp.parse(t)}catch(i){if(this.emit("digest",i),this.sel.get(),"NOT_INIT"==i.code)break;if(this.err=i,!n&&("NUMBER_TOOSHORT"==i.code||"NUMBER_TOOSMALL"==i.code||"NUMBER_MISMATCH"==i.code||"SELECT_MISMATCH"==i.code||"LEADING_ZERO"==i.code))break;if("SELECT_INCOMPLETE"==i.code){e=i.node,t=i.selected,r={end:"end"};continue}null!=i.properValue?(e=i.node,t=i.properValue):null!=i.properText?(e=null,t=i.properText):("EMPTY"==i.code&&this.tp.unset(),i.node&&i.node.unset(),e=null,t=this.tp.getText(),r={start:0,end:"end"});continue}break}if(this.err||(this.val(this.tp.getText()),u<9&&this.sel.select(r)),this.inDigest=!1,u<0)throw new Error("InputMask.digest crashed! Infinite loop on "+t)},e}(t);function r(e,t){var l=e.DATETIME_FORMATS,s=/yyyy|yy|y|M{1,4}|dd?|EEEE?|HH?|hh?|mm?|ss?|([.,])sss|a|Z{1,2}|ww|w|'(([^']+|'')*)'/g,o={y:{minLength:1,maxLength:4,max:9999,min:0,name:"year",type:"number"},yy:{minLength:2,maxLength:2,name:"yearShort",type:"number"},yyyy:{minLength:4,maxLength:4,max:9999,min:0,name:"year",type:"number"},MMMM:{name:"month",type:"select",select:l.MONTH},MMM:{name:"month",type:"select",select:l.SHORTMONTH},MM:{minLength:2,maxLength:2,name:"month",type:"number"},M:{minLength:1,maxLength:2,name:"month",type:"number",min:1},dd:{minLength:2,maxLength:2,name:"date",type:"number"},d:{minLength:1,maxLength:2,name:"date",type:"number",min:1},EEEE:{name:"day",type:"select",select:p(l.DAY)},EEE:{name:"day",type:"select",select:p(l.SHORTDAY)},HH:{minLength:2,maxLength:2,name:"hour",type:"number"},H:{minLength:1,maxLength:2,name:"hour",type:"number"},hh:{minLength:2,maxLength:2,name:"hour12",type:"number"},h:{minLength:1,maxLength:2,name:"hour12",type:"number"},mm:{minLength:2,maxLength:2,name:"minute",type:"number"},m:{minLength:1,maxLength:2,name:"minute",type:"number"},ss:{minLength:2,maxLength:2,name:"second",type:"number"},s:{minLength:1,maxLength:2,name:"second",type:"number"},sss:{minLength:3,maxLength:3,name:"millisecond",type:"number"},a:{name:"ampm",type:"select",select:l.AMPMS},ww:{minLength:2,maxLength:2,max:53,name:"week",type:"number"},w:{minLength:1,maxLength:2,max:53,name:"week",type:"number"},Z:{name:"timezone",type:"static"},ZZ:{name:"timezone",type:"static",colon:!0},string:{name:"string",type:"static"}},n={year:{extract:function(e){var t=e.getFullYear()%1e4;return 0<=t?t:0},restore:function(e,t){return e.setFullYear(t)},add:function(e,t){return e.setFullYear(e.getFullYear()+t)},prior:7},yearShort:{extract:function(e){var t=e.getFullYear()%100;return 0<=t?t:t+100},restore:function(e,t){return e.setFullYear(t)},add:function(e,t){return e.setFullYear(e.getFullYear()+t)},prior:7},month:{extract:function(e){return e.getMonth()+1},restore:function(e,t){e.setMonth(t-1),e.getMonth()==t&&e.setDate(0)},add:function(e,t){t=e.getMonth()+t,e.setMonth(t),e.getMonth()==t+1&&e.setDate(0)},prior:5},date:{extract:function(e){return e.getDate()},restore:function(e,t,n){var r=e.getMonth();if(e.setDate(t),e.getMonth()!=r&&t<=31){var i=n.getNodes("month");i&&i.every(function(e){return e.empty})&&e.setDate(t)}},add:function(e,t,n){this.restore(e,e.getDate()+t,n)},prior:4},day:{extract:function(e){return e.getDay()||7},restore:x,add:function(e,t){return e.setDate(e.getDate()+t)},prior:4},hour:{extract:function(e){return e.getHours()},restore:function(e,t){return e.setHours(t)},add:function(e,t){return e.setHours(e.getHours()+t)},prior:2},hour12:{extract:function(e){return e.getHours()%12||12},restore:T,add:function(e,t){return e.setHours(e.getHours()+t)},prior:2},ampm:{extract:function(e){return e.getHours()<12?1:2},restore:w,add:function(e,t){return e.setHours(e.getHours()+12*t)},prior:3},minute:{extract:function(e){return e.getMinutes()},restore:function(e,t){return e.setMinutes(t)},add:function(e,t){return e.setMinutes(e.getMinutes()+t)},prior:0},second:{extract:function(e){return e.getSeconds()},restore:function(e,t){return e.setSeconds(t)},add:function(e,t){return e.setSeconds(e.getSeconds()+t)},prior:1},millisecond:{extract:function(e){return e.getMilliseconds()},restore:function(e,t){return e.setMilliseconds(t)},add:function(e,t){return e.setMilliseconds(e.getMilliseconds()+t)},prior:1},week:{extract:y,restore:function(e,t){return e.setDate(e.getDate()+7*(t-y(e)))},add:function(e,t){return e.setDate(e.getDate()+7*t)},prior:6}};for(var r in n)n[r].placeholder=t[r];for(var i=0,a=Object.values(o);i<a.length;i++){var u=a[i];n[u.name]&&L.extend(u,n[u.name])}var h,c,d,f,m,g=(h=-(new Date).getTimezoneOffset(),c=0<=h?"+":"-",d=Math.abs(h),f=Math.floor(d/60),m=d%60,c+S(f,2,2)+S(m,2,2));function p(e){var t,n=[];for(t=1;t<e.length;t++)n.push(e[t]);return n.push(e[0]),n}function v(e){for(var t,n=[],r=0;t=s.exec(e);)if(t.index>r&&(n.push(L.extend({value:e.substring(r,t.index)},o.string)),r=t.index),t.index==r){if(t[1])n.push(L.extend({value:t[1]},o.string)),n.push(o.sss);else if(t[2])n.push(L.extend({value:t[2].replace("''","'")},o.string));else if("timezone"==o[t[0]].name){var i=g;o[t[0]].colon&&(i=k(i)),n.push(L.extend({value:i},o[t[0]]))}else n.push(o[t[0]]);r=s.lastIndex}return r<e.length&&n.push(L.extend({value:e.substring(r)},o.string)),n}function y(e){var t=new Date(e.getFullYear(),0,1),n=new Date(t.getTime());4<n.getDay()?n.setDate(n.getDate()+(1-n.getDay())+7):n.setDate(n.getDate()+(1-n.getDay()));var r=e.getTime()-n.getTime();return Math.floor(r/6048e5)}function x(e,t){var n=e.getMonth(),r=t-(e.getDay()||7);e.setDate(e.getDate()+r),e.getMonth()!=n&&(0<r?e.setDate(e.getDate()-7):e.setDate(e.getDate()+7))}function T(e,t){t%=12,12<=e.getHours()&&(t+=12),e.setHours(t)}function w(e,t){var n=e.getHours();n<12==1<t&&e.setHours((n+12)%24)}function k(e){return":"==e[3]?e:e.substr(0,3)+":"+e.substr(3,2)}function E(e){return":"!=e[3]?e:e.substr(0,3)+e.substr(4,2)}function b(e,t){var n=(60*+(t=E(t)).substr(1,2)+ +t.substr(3,2))*(t[0]+"1");return new Date(e.getTime()+60*(n- -e.getTimezoneOffset())*1e3)}function V(e,t){var n=(60*+(t=E(t)).substr(1,2)+ +t.substr(3,2))*(t[0]+"1");return new Date(e.getTime()+60*(-e.getTimezoneOffset()-n)*1e3)}var D=function(){function e(e){this.tp=e,this.timezone=g,this.timezoneNodes=this.tp.nodes.filter(function(e){return"timezone"==e.token.name})}var t=e.prototype;return t.parse=function n(e){return this.tp.parse(e),this},t.getText=function r(){return this.tp.getText()},t.setDate=function i(e,t){return this.tp.setValue(b(e,this.timezone),t),this},t.getDate=function s(){return V(this.tp.getValue(),this.timezone)},t.setTimezone=function a(e){if(void 0===e&&(e=g),e!=this.timezone){var t=this.getDate();this.timezone=e;var n=this.timezoneNodes,r=Array.isArray(n),i=0;for(n=r?n:n[Symbol.iterator]();;){var s;if(r){if(i>=n.length)break;s=n[i++]}else{if((i=n.next()).done)break;s=i.value}var o=s;o.token.colon?o.token.value=k(e):o.token.value=E(e)}return this.setDate(t,!1)}},t.isEmpty=function o(){return this.tp.isEmpty.apply(this.tp,arguments)},t.isInit=function u(){return this.tp.isInit.apply(this.tp,arguments)},t.unset=function l(){return this.tp.unset(),this},e}();function M(e){var t,n=v(l[e]||e);t=n.some(function(e){return"yearShort"==e.name})?function(n){return function(e){n.apply(this,arguments);var t=e.getFullYear();t<0&&e.setFullYear(t+100)}}:function(n){return function(e){n.apply(this,arguments);var t=e.getFullYear();t<0&&e.setFullYear(0),9999<t&&e.setFullYear(9999)}};var r=n,i=Array.isArray(r),s=0;for(r=i?r:r[Symbol.iterator]();;){var o;if(i){if(s>=r.length)break;o=r[s++]}else{if((s=r.next()).done)break;o=s.value}var a=o;a.add&&(a.add=t(a.add)),a.restore&&(a.restore=t(a.restore))}var u=new N({tokens:n,value:new Date,copyValue:function(e){return new Date(e.getTime())}});return new D(u)}return M}function s(g,e,p){var v=function(){function e(e,t){this.el=e,this.doc=t}var t=e.prototype;return t.on=function n(e,t){if("input"!=e)return this.el.on(e,t)},t.getSelection=function r(){var e=this.el[0];if(this.doc.activeElement==e){var t=e.selectionStart,n=e.selectionEnd;return L.isDefined(t)&&L.isDefined(n)?{start:t,end:n}:this.getSelectionIE()}},t.getSelectionIE=function s(){var e=this.el[0],t=this.doc.selection.createRange().getBookmark(),n=e.createTextRange(),r=n.duplicate();n.moveToBookmark(t),r.setEndPoint("EndToStart",n);var i=r.text.length;return{start:i,end:i+n.text.length}},t.setSelection=function i(e,t){var n=this.el[0];this.doc.activeElement==n&&(n.setSelectionRange?n.setSelectionRange(e,t):this.setSelectionIE(e,t))},t.setSelectionIE=function o(e,t){var n=this.el[0].createTextRange();n.moveStart("character",e),n.collapse(),n.moveEnd("character",t-e),n.select()},t.val=function a(){var e;return(e=this.el).val.apply(e,arguments)},e}();function t(t,e,n,r){if(!r)return!1;n.ngTrim="false";var i,s=g(n.datetime),o=n.datetimeModel&&g(n.datetimeModel),a=new v(e,p[0]),u=new b(a,s.tp,n.datetimeSeparator);function l(e){e&&!i?(i=!0,s.setTimezone("+0000"),o&&o.setTimezone("+0000")):!e&&i&&(i=!1,s.setTimezone(),o&&o.setTimezone())}function h(e){s.setTimezone(e),o&&o.setTimezone(e)}function c(e){return!(!r.$isEmpty(e)&&!r.$isEmpty(n.min))||(L.isDate(e)||(e=o.getDate()),e>=new Date(n.min))}function d(e){return!(!r.$isEmpty(e)&&!r.$isEmpty(n.max))||(L.isDate(e)||(e=o.getDate()),e<=new Date(n.max))}function f(e){return r.$validate?r.$validate():(r.$setValidity("min",c(e)),r.$setValidity("max",d(e))),!r.$error.min&&!r.$error.max}function m(e){return!(!L.isDate(e)||o)||!(!L.isString(e)||!o)}u.on("digest",function(e){"NOT_INIT"!=e.code&&r.$setValidity("datetime",!1)}),s.tp.on("change",function(){t.$evalAsync(function(){u.err?r.$setValidity("datetime",!1):(s.isInit()||s.isEmpty()?r.$setValidity("datetime",!0):r.$setValidity("datetime",!1),s.getText()!=r.$viewValue&&r.$setViewValue(s.getText()))})}),L.isDefined(n.datetimeUtc)&&(0<n.datetimeUtc.length?t.$watch(n.datetimeUtc,l):l(!0)),L.isDefined(n.datetimeTimezone)&&(/^[+-]\d{2}:?\d{2}$/.test(n.datetimeTimezone)?h(n.datetimeTimezone):t.$watch(n.datetimeTimezone,h)),r.$validators&&(r.$validators.min=c,r.$validators.max=d),n.$observe("min",function(){f(s.getDate())}),n.$observe("max",function(){f(s.getDate())}),r.$render=function(){},r.$isEmpty=function(e){return!e||"string"==typeof e&&s.isEmpty(e)},r.$parsers.unshift(function(e){if(L.isUndefined(e)&&(e=s.getText()),!L.isString(e))return e;if(u.digest(null,e),!s.isInit())return undefined;var t=s.getDate();return r.$validate||f(t)?o?o.setDate(t).getText():new Date(t.getTime()):undefined}),r.$formatters.push(function(e){return r.$setValidity("datetime",!0),e?m(e)?(o&&(e=o.parse(e).getDate()),r.$validate||f(e),s.setDate(e).getText()):e:(s.unset(),t.$evalAsync(function(){r.$setViewValue(s.getText())}),s.getText())})}return{restrict:"A",require:"?ngModel",link:t,priority:100}}L.module("datetime").factory("datetime",r),r.$inject=["$locale","datetimePlaceholder"],L.module("datetime").directive("datetime",s),s.$inject=["datetime","$log","$document"]}(angular);