jekyll-theme-digitalebrain 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. checksums.yaml +4 -4
  2. metadata +1 -165
  3. data/_config.yml +0 -49
  4. data/_includes/_footer.html +0 -68
  5. data/_includes/_head.html +0 -29
  6. data/_includes/_navbar.html +0 -20
  7. data/_layouts/default.html +0 -41
  8. data/_layouts/page.html +0 -39
  9. data/_layouts/post.html +0 -5
  10. data/_sass/bootstrap/_alert.scss +0 -51
  11. data/_sass/bootstrap/_badge.scss +0 -47
  12. data/_sass/bootstrap/_breadcrumb.scss +0 -41
  13. data/_sass/bootstrap/_button-group.scss +0 -172
  14. data/_sass/bootstrap/_buttons.scss +0 -144
  15. data/_sass/bootstrap/_card.scss +0 -301
  16. data/_sass/bootstrap/_carousel.scss +0 -235
  17. data/_sass/bootstrap/_close.scss +0 -34
  18. data/_sass/bootstrap/_code.scss +0 -56
  19. data/_sass/bootstrap/_custom-forms.scss +0 -420
  20. data/_sass/bootstrap/_dropdown.scss +0 -166
  21. data/_sass/bootstrap/_forms.scss +0 -335
  22. data/_sass/bootstrap/_functions.scss +0 -86
  23. data/_sass/bootstrap/_grid.scss +0 -52
  24. data/_sass/bootstrap/_images.scss +0 -42
  25. data/_sass/bootstrap/_input-group.scss +0 -159
  26. data/_sass/bootstrap/_jumbotron.scss +0 -16
  27. data/_sass/bootstrap/_list-group.scss +0 -115
  28. data/_sass/bootstrap/_media.scss +0 -8
  29. data/_sass/bootstrap/_mixins.scss +0 -41
  30. data/_sass/bootstrap/_modal.scss +0 -168
  31. data/_sass/bootstrap/_nav.scss +0 -118
  32. data/_sass/bootstrap/_navbar.scss +0 -299
  33. data/_sass/bootstrap/_pagination.scss +0 -78
  34. data/_sass/bootstrap/_popover.scss +0 -183
  35. data/_sass/bootstrap/_print.scss +0 -124
  36. data/_sass/bootstrap/_progress.scss +0 -34
  37. data/_sass/bootstrap/_reboot.scss +0 -482
  38. data/_sass/bootstrap/_root.scss +0 -19
  39. data/_sass/bootstrap/_tables.scss +0 -188
  40. data/_sass/bootstrap/_tooltip.scss +0 -115
  41. data/_sass/bootstrap/_transitions.scss +0 -22
  42. data/_sass/bootstrap/_type.scss +0 -125
  43. data/_sass/bootstrap/_utilities.scss +0 -15
  44. data/_sass/bootstrap/_variables.scss +0 -930
  45. data/_sass/bootstrap/bootstrap-grid.scss +0 -32
  46. data/_sass/bootstrap/bootstrap-reboot.scss +0 -12
  47. data/_sass/bootstrap/bootstrap.scss +0 -42
  48. data/_sass/bootstrap/mixins/_alert.scss +0 -13
  49. data/_sass/bootstrap/mixins/_background-variant.scss +0 -21
  50. data/_sass/bootstrap/mixins/_badge.scss +0 -12
  51. data/_sass/bootstrap/mixins/_border-radius.scss +0 -35
  52. data/_sass/bootstrap/mixins/_box-shadow.scss +0 -5
  53. data/_sass/bootstrap/mixins/_breakpoints.scss +0 -123
  54. data/_sass/bootstrap/mixins/_buttons.scss +0 -109
  55. data/_sass/bootstrap/mixins/_caret.scss +0 -66
  56. data/_sass/bootstrap/mixins/_clearfix.scss +0 -7
  57. data/_sass/bootstrap/mixins/_float.scss +0 -11
  58. data/_sass/bootstrap/mixins/_forms.scss +0 -137
  59. data/_sass/bootstrap/mixins/_gradients.scss +0 -45
  60. data/_sass/bootstrap/mixins/_grid-framework.scss +0 -67
  61. data/_sass/bootstrap/mixins/_grid.scss +0 -52
  62. data/_sass/bootstrap/mixins/_hover.scss +0 -37
  63. data/_sass/bootstrap/mixins/_image.scss +0 -36
  64. data/_sass/bootstrap/mixins/_list-group.scss +0 -21
  65. data/_sass/bootstrap/mixins/_lists.scss +0 -7
  66. data/_sass/bootstrap/mixins/_nav-divider.scss +0 -10
  67. data/_sass/bootstrap/mixins/_pagination.scss +0 -22
  68. data/_sass/bootstrap/mixins/_reset-text.scss +0 -17
  69. data/_sass/bootstrap/mixins/_resize.scss +0 -6
  70. data/_sass/bootstrap/mixins/_screen-reader.scss +0 -33
  71. data/_sass/bootstrap/mixins/_size.scss +0 -6
  72. data/_sass/bootstrap/mixins/_table-row.scss +0 -30
  73. data/_sass/bootstrap/mixins/_text-emphasis.scss +0 -14
  74. data/_sass/bootstrap/mixins/_text-hide.scss +0 -11
  75. data/_sass/bootstrap/mixins/_text-truncate.scss +0 -8
  76. data/_sass/bootstrap/mixins/_transition.scss +0 -13
  77. data/_sass/bootstrap/mixins/_visibility.scss +0 -7
  78. data/_sass/bootstrap/utilities/_align.scss +0 -8
  79. data/_sass/bootstrap/utilities/_background.scss +0 -19
  80. data/_sass/bootstrap/utilities/_borders.scss +0 -59
  81. data/_sass/bootstrap/utilities/_clearfix.scss +0 -3
  82. data/_sass/bootstrap/utilities/_display.scss +0 -38
  83. data/_sass/bootstrap/utilities/_embed.scss +0 -52
  84. data/_sass/bootstrap/utilities/_flex.scss +0 -51
  85. data/_sass/bootstrap/utilities/_float.scss +0 -9
  86. data/_sass/bootstrap/utilities/_position.scss +0 -37
  87. data/_sass/bootstrap/utilities/_screenreaders.scss +0 -11
  88. data/_sass/bootstrap/utilities/_shadows.scss +0 -6
  89. data/_sass/bootstrap/utilities/_sizing.scss +0 -12
  90. data/_sass/bootstrap/utilities/_spacing.scss +0 -51
  91. data/_sass/bootstrap/utilities/_text.scss +0 -58
  92. data/_sass/bootstrap/utilities/_visibility.scss +0 -11
  93. data/_sass/style.scss +0 -1569
  94. data/about.md +0 -10
  95. data/assets/.DS_Store +0 -0
  96. data/assets/css/Flaticon.woff +0 -0
  97. data/assets/css/Flaticon.woff2 +0 -0
  98. data/assets/css/_flaticon.scss +0 -70
  99. data/assets/css/ajax-loader.gif +0 -0
  100. data/assets/css/animate.css +0 -3377
  101. data/assets/css/aos.css +0 -2
  102. data/assets/css/bootstrap-datepicker.css +0 -512
  103. data/assets/css/bootstrap.min.css +0 -7
  104. data/assets/css/bootstrap/bootstrap-grid.css +0 -1708
  105. data/assets/css/bootstrap/bootstrap-reboot.css +0 -272
  106. data/assets/css/content.css +0 -101
  107. data/assets/css/css/bootstrap-reboot.css +0 -272
  108. data/assets/css/css/mixins/_text-hide.css +0 -0
  109. data/assets/css/flaticon.css +0 -47
  110. data/assets/css/icomoon.css +0 -4919
  111. data/assets/css/ionicons.min.css +0 -11
  112. data/assets/css/jquery.timepicker.css +0 -72
  113. data/assets/css/magnific-popup.css +0 -351
  114. data/assets/css/open-iconic-bootstrap.min.css +0 -1
  115. data/assets/css/owl.carousel.min.css +0 -6
  116. data/assets/css/owl.theme.default.min.css +0 -15
  117. data/assets/css/style.css +0 -8488
  118. data/assets/fonts/flaticon/backup.txt +0 -1
  119. data/assets/fonts/flaticon/font/Flaticon.eot +0 -0
  120. data/assets/fonts/flaticon/font/Flaticon.svg +0 -303
  121. data/assets/fonts/flaticon/font/Flaticon.ttf +0 -0
  122. data/assets/fonts/flaticon/font/Flaticon.woff +0 -0
  123. data/assets/fonts/flaticon/font/Flaticon.woff2 +0 -0
  124. data/assets/fonts/flaticon/font/_flaticon.scss +0 -70
  125. data/assets/fonts/flaticon/font/flaticon.css +0 -47
  126. data/assets/fonts/flaticon/font/flaticon.html +0 -530
  127. data/assets/fonts/flaticon/license/license.pdf +0 -0
  128. data/assets/fonts/icomoon/icomoon.eot +0 -0
  129. data/assets/fonts/icomoon/icomoon.svg +0 -1530
  130. data/assets/fonts/icomoon/icomoon.ttf +0 -0
  131. data/assets/fonts/icomoon/icomoon.woff +0 -0
  132. data/assets/fonts/ionicons/css/_ionicons.scss +0 -1480
  133. data/assets/fonts/ionicons/css/ionicons.min.css +0 -11
  134. data/assets/fonts/ionicons/fonts/ionicons.eot +0 -0
  135. data/assets/fonts/ionicons/fonts/ionicons.svg +0 -2094
  136. data/assets/fonts/ionicons/fonts/ionicons.ttf +0 -0
  137. data/assets/fonts/ionicons/fonts/ionicons.woff +0 -0
  138. data/assets/fonts/ionicons/fonts/ionicons.woff2 +0 -0
  139. data/assets/fonts/open-iconic/open-iconic.eot +0 -0
  140. data/assets/fonts/open-iconic/open-iconic.otf +0 -0
  141. data/assets/fonts/open-iconic/open-iconic.svg +0 -543
  142. data/assets/fonts/open-iconic/open-iconic.ttf +0 -0
  143. data/assets/fonts/open-iconic/open-iconic.woff +0 -0
  144. data/assets/images/.DS_Store +0 -0
  145. data/assets/images/bg_1.jpg +0 -0
  146. data/assets/images/bg_1_.jpg +0 -0
  147. data/assets/images/bubbles_.jpg +0 -0
  148. data/assets/images/favicon.png +0 -0
  149. data/assets/images/loc.png +0 -0
  150. data/assets/js/aos.js +0 -2
  151. data/assets/js/bootstrap-datepicker.js +0 -1671
  152. data/assets/js/bootstrap.min.js +0 -7
  153. data/assets/js/google-map.js +0 -62
  154. data/assets/js/jquery-3.2.1.min.js +0 -4
  155. data/assets/js/jquery-migrate-3.0.1.min.js +0 -215
  156. data/assets/js/jquery.animateNumber.min.js +0 -8
  157. data/assets/js/jquery.easing.1.3.js +0 -205
  158. data/assets/js/jquery.magnific-popup.min.js +0 -4
  159. data/assets/js/jquery.min.js +0 -10253
  160. data/assets/js/jquery.stellar.min.js +0 -2
  161. data/assets/js/jquery.timepicker.min.js +0 -7
  162. data/assets/js/jquery.waypoints.min.js +0 -7
  163. data/assets/js/main.js +0 -346
  164. data/assets/js/owl.carousel.min.js +0 -7
  165. data/assets/js/popper.min.js +0 -5
  166. data/index.md +0 -4
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/assets/js/aos.js DELETED
@@ -1,2 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="dist/",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},r=n(1),a=(o(r),n(6)),u=o(a),c=n(7),f=o(c),s=n(8),d=o(s),l=n(9),p=o(l),m=n(10),b=o(m),v=n(11),y=o(v),g=n(14),h=o(g),w=[],k=!1,x=document.all&&!window.atob,j={offset:120,delay:0,easing:"ease",duration:400,disable:!1,once:!1,startEvent:"DOMContentLoaded"},O=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,j),(0,b.default)(w,j.once),w},S=function(){w=(0,h.default)(),O()},_=function(){w.forEach(function(e,t){e.node.removeAttribute("data-aos"),e.node.removeAttribute("data-aos-easing"),e.node.removeAttribute("data-aos-duration"),e.node.removeAttribute("data-aos-delay")})},E=function(e){return e===!0||"mobile"===e&&p.default.mobile()||"phone"===e&&p.default.phone()||"tablet"===e&&p.default.tablet()||"function"==typeof e&&e()===!0},z=function(e){return j=i(j,e),w=(0,h.default)(),E(j.disable)||x?_():(document.querySelector("body").setAttribute("data-aos-easing",j.easing),document.querySelector("body").setAttribute("data-aos-duration",j.duration),document.querySelector("body").setAttribute("data-aos-delay",j.delay),"DOMContentLoaded"===j.startEvent&&["complete","interactive"].indexOf(document.readyState)>-1?O(!0):"load"===j.startEvent?window.addEventListener(j.startEvent,function(){O(!0)}):document.addEventListener(j.startEvent,function(){O(!0)}),window.addEventListener("resize",(0,f.default)(O,50,!0)),window.addEventListener("orientationchange",(0,f.default)(O,50,!0)),window.addEventListener("scroll",(0,u.default)(function(){(0,b.default)(w,j.once)},99)),document.addEventListener("DOMNodeRemoved",function(e){var t=e.target;t&&1===t.nodeType&&t.hasAttribute&&t.hasAttribute("data-aos")&&(0,f.default)(S,50,!0)}),(0,d.default)("[data-aos]",S),w)};e.exports={init:z,refresh:O,refreshHard:S}},function(e,t){},,,,,function(e,t){(function(t){"use strict";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(s,t),S?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return _?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||_&&o>=y}function s(){var e=O();return c(e)?d(e):void(h=setTimeout(s,a(e)))}function d(e){return h=void 0,E&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(_)return h=setTimeout(s,t),o(w)}return void 0===h&&(h=setTimeout(s,t)),g}var b,v,y,g,h,w,k=0,S=!1,_=!1,E=!0;if("function"!=typeof e)throw new TypeError(f);return t=u(t)||0,i(n)&&(S=!!n.leading,_="maxWait"in n,y=_?x(u(n.maxWait)||0,t):y,E="trailing"in n?!!n.trailing:E),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if("function"!=typeof e)throw new TypeError(f);return i(o)&&(r="leading"in o?!!o.leading:r,a="trailing"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t="undefined"==typeof e?"undefined":c(e);return!!e&&("object"==t||"function"==t)}function r(e){return!!e&&"object"==("undefined"==typeof e?"undefined":c(e))}function a(e){return"symbol"==("undefined"==typeof e?"undefined":c(e))||r(e)&&k.call(e)==d}function u(e){if("number"==typeof e)return e;if(a(e))return s;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(l,"");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?s:+e}var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f="Expected a function",s=NaN,d="[object Symbol]",l=/^\s+|\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y="object"==("undefined"==typeof t?"undefined":c(t))&&t&&t.Object===Object&&t,g="object"==("undefined"==typeof self?"undefined":c(self))&&self&&self.Object===Object&&self,h=y||g||Function("return this")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){"use strict";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(s,t),S?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return _?x(i,y-o):i}function f(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||_&&o>=y}function s(){var e=j();return f(e)?d(e):void(h=setTimeout(s,u(e)))}function d(e){return h=void 0,E&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=f(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(_)return h=setTimeout(s,t),i(w)}return void 0===h&&(h=setTimeout(s,t)),g}var b,v,y,g,h,w,O=0,S=!1,_=!1,E=!0;if("function"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(S=!!n.leading,_="maxWait"in n,y=_?k(a(n.maxWait)||0,t):y,E="trailing"in n?!!n.trailing:E),m.cancel=l,m.flush=p,m}function o(e){var t="undefined"==typeof e?"undefined":u(e);return!!e&&("object"==t||"function"==t)}function i(e){return!!e&&"object"==("undefined"==typeof e?"undefined":u(e))}function r(e){return"symbol"==("undefined"==typeof e?"undefined":u(e))||i(e)&&w.call(e)==s}function a(e){if("number"==typeof e)return e;if(r(e))return f;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(d,"");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?f:+e}var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c="Expected a function",f=NaN,s="[object Symbol]",d=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v="object"==("undefined"==typeof t?"undefined":u(t))&&t&&t.Object===Object&&t,y="object"==("undefined"==typeof self?"undefined":u(self))&&self&&self.Object===Object&&self,g=v||y||Function("return this")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){"use strict";function n(e,t){a.push({selector:e,fn:t}),!u&&r&&(u=new r(o),u.observe(i.documentElement,{childList:!0,subtree:!0,removedNodes:!0})),o()}function o(){for(var e,t,n=0,o=a.length;n<o;n++){e=a[n],t=i.querySelectorAll(e.selector);for(var r,u=0,c=t.length;u<c;u++)r=t[u],r.ready||(r.ready=!0,e.fn.call(r,r))}}Object.defineProperty(t,"__esModule",{value:!0});var i=window.document,r=window.MutationObserver||window.WebKitMutationObserver,a=[],u=void 0;t.default=n},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(){return navigator.userAgent||navigator.vendor||window.opera||""}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),r=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,a=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,u=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i,c=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,f=function(){function e(){n(this,e)}return i(e,[{key:"phone",value:function(){var e=o();return!(!r.test(e)&&!a.test(e.substr(0,4)))}},{key:"mobile",value:function(){var e=o();return!(!u.test(e)&&!c.test(e.substr(0,4)))}},{key:"tablet",value:function(){return this.mobile()&&!this.phone()}}]),e}();t.default=new f},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e,t,n){var o=e.node.getAttribute("data-aos-once");t>e.position?e.node.classList.add("aos-animate"):"undefined"!=typeof o&&("false"===o||!n&&"true"!==o)&&e.node.classList.remove("aos-animate")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add("aos-init"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute("data-aos-offset"),anchor:e.getAttribute("data-aos-anchor"),anchorPlacement:e.getAttribute("data-aos-anchor-placement")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case"top-bottom":break;case"center-bottom":n+=e.offsetHeight/2;break;case"bottom-bottom":n+=e.offsetHeight;break;case"top-center":n+=i/2;break;case"bottom-center":n+=i/2+e.offsetHeight;break;case"center-center":n+=i/2+e.offsetHeight/2;break;case"top-top":n+=i;break;case"bottom-top":n+=e.offsetHeight+i;break;case"center-top":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-("BODY"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-("BODY"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){e=e||document.querySelectorAll("[data-aos]");var t=[];return[].forEach.call(e,function(e,n){t.push({node:e})}),t};t.default=n}])});
2
- sourceMappingURL=aos.js.map
@@ -1,1671 +0,0 @@
1
- /* =========================================================
2
- * bootstrap-datepicker.js
3
- * Repo: https://github.com/eternicode/bootstrap-datepicker/
4
- * Demo: http://eternicode.github.io/bootstrap-datepicker/
5
- * Docs: http://bootstrap-datepicker.readthedocs.org/
6
- * Forked from http://www.eyecon.ro/bootstrap-datepicker
7
- * =========================================================
8
- * Started by Stefan Petre; improvements by Andrew Rowls + contributors
9
- *
10
- * Licensed under the Apache License, Version 2.0 (the "License");
11
- * you may not use this file except in compliance with the License.
12
- * You may obtain a copy of the License at
13
- *
14
- * http://www.apache.org/licenses/LICENSE-2.0
15
- *
16
- * Unless required by applicable law or agreed to in writing, software
17
- * distributed under the License is distributed on an "AS IS" BASIS,
18
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
- * See the License for the specific language governing permissions and
20
- * limitations under the License.
21
- * ========================================================= */
22
-
23
- (function($, undefined){
24
-
25
- var $window = $(window);
26
-
27
- function UTCDate(){
28
- return new Date(Date.UTC.apply(Date, arguments));
29
- }
30
- function UTCToday(){
31
- var today = new Date();
32
- return UTCDate(today.getFullYear(), today.getMonth(), today.getDate());
33
- }
34
- function alias(method){
35
- return function(){
36
- return this[method].apply(this, arguments);
37
- };
38
- }
39
-
40
- var DateArray = (function(){
41
- var extras = {
42
- get: function(i){
43
- return this.slice(i)[0];
44
- },
45
- contains: function(d){
46
- // Array.indexOf is not cross-browser;
47
- // $.inArray doesn't work with Dates
48
- var val = d && d.valueOf();
49
- for (var i=0, l=this.length; i < l; i++)
50
- if (this[i].valueOf() === val)
51
- return i;
52
- return -1;
53
- },
54
- remove: function(i){
55
- this.splice(i,1);
56
- },
57
- replace: function(new_array){
58
- if (!new_array)
59
- return;
60
- if (!$.isArray(new_array))
61
- new_array = [new_array];
62
- this.clear();
63
- this.push.apply(this, new_array);
64
- },
65
- clear: function(){
66
- this.splice(0);
67
- },
68
- copy: function(){
69
- var a = new DateArray();
70
- a.replace(this);
71
- return a;
72
- }
73
- };
74
-
75
- return function(){
76
- var a = [];
77
- a.push.apply(a, arguments);
78
- $.extend(a, extras);
79
- return a;
80
- };
81
- })();
82
-
83
-
84
- // Picker object
85
-
86
- var Datepicker = function(element, options){
87
- this.dates = new DateArray();
88
- this.viewDate = UTCToday();
89
- this.focusDate = null;
90
-
91
- this._process_options(options);
92
-
93
- this.element = $(element);
94
- this.isInline = false;
95
- this.isInput = this.element.is('input');
96
- this.component = this.element.is('.date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;
97
- this.hasInput = this.component && this.element.find('input').length;
98
- if (this.component && this.component.length === 0)
99
- this.component = false;
100
-
101
- this.picker = $(DPGlobal.template);
102
- this._buildEvents();
103
- this._attachEvents();
104
-
105
- if (this.isInline){
106
- this.picker.addClass('datepicker-inline').appendTo(this.element);
107
- }
108
- else {
109
- this.picker.addClass('datepicker-dropdown dropdown-menu');
110
- }
111
-
112
- if (this.o.rtl){
113
- this.picker.addClass('datepicker-rtl');
114
- }
115
-
116
- this.viewMode = this.o.startView;
117
-
118
- if (this.o.calendarWeeks)
119
- this.picker.find('tfoot th.today')
120
- .attr('colspan', function(i, val){
121
- return parseInt(val) + 1;
122
- });
123
-
124
- this._allow_update = false;
125
-
126
- this.setStartDate(this._o.startDate);
127
- this.setEndDate(this._o.endDate);
128
- this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);
129
-
130
- this.fillDow();
131
- this.fillMonths();
132
-
133
- this._allow_update = true;
134
-
135
- this.update();
136
- this.showMode();
137
-
138
- if (this.isInline){
139
- this.show();
140
- }
141
- };
142
-
143
- Datepicker.prototype = {
144
- constructor: Datepicker,
145
-
146
- _process_options: function(opts){
147
- // Store raw options for reference
148
- this._o = $.extend({}, this._o, opts);
149
- // Processed options
150
- var o = this.o = $.extend({}, this._o);
151
-
152
- // Check if "de-DE" style date is available, if not language should
153
- // fallback to 2 letter code eg "de"
154
- var lang = o.language;
155
- if (!dates[lang]){
156
- lang = lang.split('-')[0];
157
- if (!dates[lang])
158
- lang = defaults.language;
159
- }
160
- o.language = lang;
161
-
162
- switch (o.startView){
163
- case 2:
164
- case 'decade':
165
- o.startView = 2;
166
- break;
167
- case 1:
168
- case 'year':
169
- o.startView = 1;
170
- break;
171
- default:
172
- o.startView = 0;
173
- }
174
-
175
- switch (o.minViewMode){
176
- case 1:
177
- case 'months':
178
- o.minViewMode = 1;
179
- break;
180
- case 2:
181
- case 'years':
182
- o.minViewMode = 2;
183
- break;
184
- default:
185
- o.minViewMode = 0;
186
- }
187
-
188
- o.startView = Math.max(o.startView, o.minViewMode);
189
-
190
- // true, false, or Number > 0
191
- if (o.multidate !== true){
192
- o.multidate = Number(o.multidate) || false;
193
- if (o.multidate !== false)
194
- o.multidate = Math.max(0, o.multidate);
195
- else
196
- o.multidate = 1;
197
- }
198
- o.multidateSeparator = String(o.multidateSeparator);
199
-
200
- o.weekStart %= 7;
201
- o.weekEnd = ((o.weekStart + 6) % 7);
202
-
203
- var format = DPGlobal.parseFormat(o.format);
204
- if (o.startDate !== -Infinity){
205
- if (!!o.startDate){
206
- if (o.startDate instanceof Date)
207
- o.startDate = this._local_to_utc(this._zero_time(o.startDate));
208
- else
209
- o.startDate = DPGlobal.parseDate(o.startDate, format, o.language);
210
- }
211
- else {
212
- o.startDate = -Infinity;
213
- }
214
- }
215
- if (o.endDate !== Infinity){
216
- if (!!o.endDate){
217
- if (o.endDate instanceof Date)
218
- o.endDate = this._local_to_utc(this._zero_time(o.endDate));
219
- else
220
- o.endDate = DPGlobal.parseDate(o.endDate, format, o.language);
221
- }
222
- else {
223
- o.endDate = Infinity;
224
- }
225
- }
226
-
227
- o.daysOfWeekDisabled = o.daysOfWeekDisabled||[];
228
- if (!$.isArray(o.daysOfWeekDisabled))
229
- o.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\s]*/);
230
- o.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){
231
- return parseInt(d, 10);
232
- });
233
-
234
- var plc = String(o.orientation).toLowerCase().split(/\s+/g),
235
- _plc = o.orientation.toLowerCase();
236
- plc = $.grep(plc, function(word){
237
- return (/^auto|left|right|top|bottom$/).test(word);
238
- });
239
- o.orientation = {x: 'auto', y: 'auto'};
240
- if (!_plc || _plc === 'auto')
241
- ; // no action
242
- else if (plc.length === 1){
243
- switch (plc[0]){
244
- case 'top':
245
- case 'bottom':
246
- o.orientation.y = plc[0];
247
- break;
248
- case 'left':
249
- case 'right':
250
- o.orientation.x = plc[0];
251
- break;
252
- }
253
- }
254
- else {
255
- _plc = $.grep(plc, function(word){
256
- return (/^left|right$/).test(word);
257
- });
258
- o.orientation.x = _plc[0] || 'auto';
259
-
260
- _plc = $.grep(plc, function(word){
261
- return (/^top|bottom$/).test(word);
262
- });
263
- o.orientation.y = _plc[0] || 'auto';
264
- }
265
- },
266
- _events: [],
267
- _secondaryEvents: [],
268
- _applyEvents: function(evs){
269
- for (var i=0, el, ch, ev; i < evs.length; i++){
270
- el = evs[i][0];
271
- if (evs[i].length === 2){
272
- ch = undefined;
273
- ev = evs[i][1];
274
- }
275
- else if (evs[i].length === 3){
276
- ch = evs[i][1];
277
- ev = evs[i][2];
278
- }
279
- el.on(ev, ch);
280
- }
281
- },
282
- _unapplyEvents: function(evs){
283
- for (var i=0, el, ev, ch; i < evs.length; i++){
284
- el = evs[i][0];
285
- if (evs[i].length === 2){
286
- ch = undefined;
287
- ev = evs[i][1];
288
- }
289
- else if (evs[i].length === 3){
290
- ch = evs[i][1];
291
- ev = evs[i][2];
292
- }
293
- el.off(ev, ch);
294
- }
295
- },
296
- _buildEvents: function(){
297
- if (this.isInput){ // single input
298
- this._events = [
299
- [this.element, {
300
- focus: $.proxy(this.show, this),
301
- keyup: $.proxy(function(e){
302
- if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)
303
- this.update();
304
- }, this),
305
- keydown: $.proxy(this.keydown, this)
306
- }]
307
- ];
308
- }
309
- else if (this.component && this.hasInput){ // component: input + button
310
- this._events = [
311
- // For components that are not readonly, allow keyboard nav
312
- [this.element.find('input'), {
313
- focus: $.proxy(this.show, this),
314
- keyup: $.proxy(function(e){
315
- if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)
316
- this.update();
317
- }, this),
318
- keydown: $.proxy(this.keydown, this)
319
- }],
320
- [this.component, {
321
- click: $.proxy(this.show, this)
322
- }]
323
- ];
324
- }
325
- else if (this.element.is('div')){ // inline datepicker
326
- this.isInline = true;
327
- }
328
- else {
329
- this._events = [
330
- [this.element, {
331
- click: $.proxy(this.show, this)
332
- }]
333
- ];
334
- }
335
- this._events.push(
336
- // Component: listen for blur on element descendants
337
- [this.element, '*', {
338
- blur: $.proxy(function(e){
339
- this._focused_from = e.target;
340
- }, this)
341
- }],
342
- // Input: listen for blur on element
343
- [this.element, {
344
- blur: $.proxy(function(e){
345
- this._focused_from = e.target;
346
- }, this)
347
- }]
348
- );
349
-
350
- this._secondaryEvents = [
351
- [this.picker, {
352
- click: $.proxy(this.click, this)
353
- }],
354
- [$(window), {
355
- resize: $.proxy(this.place, this)
356
- }],
357
- [$(document), {
358
- 'mousedown touchstart': $.proxy(function(e){
359
- // Clicked outside the datepicker, hide it
360
- if (!(
361
- this.element.is(e.target) ||
362
- this.element.find(e.target).length ||
363
- this.picker.is(e.target) ||
364
- this.picker.find(e.target).length
365
- )){
366
- this.hide();
367
- }
368
- }, this)
369
- }]
370
- ];
371
- },
372
- _attachEvents: function(){
373
- this._detachEvents();
374
- this._applyEvents(this._events);
375
- },
376
- _detachEvents: function(){
377
- this._unapplyEvents(this._events);
378
- },
379
- _attachSecondaryEvents: function(){
380
- this._detachSecondaryEvents();
381
- this._applyEvents(this._secondaryEvents);
382
- },
383
- _detachSecondaryEvents: function(){
384
- this._unapplyEvents(this._secondaryEvents);
385
- },
386
- _trigger: function(event, altdate){
387
- var date = altdate || this.dates.get(-1),
388
- local_date = this._utc_to_local(date);
389
-
390
- this.element.trigger({
391
- type: event,
392
- date: local_date,
393
- dates: $.map(this.dates, this._utc_to_local),
394
- format: $.proxy(function(ix, format){
395
- if (arguments.length === 0){
396
- ix = this.dates.length - 1;
397
- format = this.o.format;
398
- }
399
- else if (typeof ix === 'string'){
400
- format = ix;
401
- ix = this.dates.length - 1;
402
- }
403
- format = format || this.o.format;
404
- var date = this.dates.get(ix);
405
- return DPGlobal.formatDate(date, format, this.o.language);
406
- }, this)
407
- });
408
- },
409
-
410
- show: function(){
411
- if (!this.isInline)
412
- this.picker.appendTo('body');
413
- this.picker.show();
414
- this.place();
415
- this._attachSecondaryEvents();
416
- this._trigger('show');
417
- },
418
-
419
- hide: function(){
420
- if (this.isInline)
421
- return;
422
- if (!this.picker.is(':visible'))
423
- return;
424
- this.focusDate = null;
425
- this.picker.hide().detach();
426
- this._detachSecondaryEvents();
427
- this.viewMode = this.o.startView;
428
- this.showMode();
429
-
430
- if (
431
- this.o.forceParse &&
432
- (
433
- this.isInput && this.element.val() ||
434
- this.hasInput && this.element.find('input').val()
435
- )
436
- )
437
- this.setValue();
438
- this._trigger('hide');
439
- },
440
-
441
- remove: function(){
442
- this.hide();
443
- this._detachEvents();
444
- this._detachSecondaryEvents();
445
- this.picker.remove();
446
- delete this.element.data().datepicker;
447
- if (!this.isInput){
448
- delete this.element.data().date;
449
- }
450
- },
451
-
452
- _utc_to_local: function(utc){
453
- return utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000));
454
- },
455
- _local_to_utc: function(local){
456
- return local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));
457
- },
458
- _zero_time: function(local){
459
- return local && new Date(local.getFullYear(), local.getMonth(), local.getDate());
460
- },
461
- _zero_utc_time: function(utc){
462
- return utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate()));
463
- },
464
-
465
- getDates: function(){
466
- return $.map(this.dates, this._utc_to_local);
467
- },
468
-
469
- getUTCDates: function(){
470
- return $.map(this.dates, function(d){
471
- return new Date(d);
472
- });
473
- },
474
-
475
- getDate: function(){
476
- return this._utc_to_local(this.getUTCDate());
477
- },
478
-
479
- getUTCDate: function(){
480
- return new Date(this.dates.get(-1));
481
- },
482
-
483
- setDates: function(){
484
- var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
485
- this.update.apply(this, args);
486
- this._trigger('changeDate');
487
- this.setValue();
488
- },
489
-
490
- setUTCDates: function(){
491
- var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
492
- this.update.apply(this, $.map(args, this._utc_to_local));
493
- this._trigger('changeDate');
494
- this.setValue();
495
- },
496
-
497
- setDate: alias('setDates'),
498
- setUTCDate: alias('setUTCDates'),
499
-
500
- setValue: function(){
501
- var formatted = this.getFormattedDate();
502
- if (!this.isInput){
503
- if (this.component){
504
- this.element.find('input').val(formatted).change();
505
- }
506
- }
507
- else {
508
- this.element.val(formatted).change();
509
- }
510
- },
511
-
512
- getFormattedDate: function(format){
513
- if (format === undefined)
514
- format = this.o.format;
515
-
516
- var lang = this.o.language;
517
- return $.map(this.dates, function(d){
518
- return DPGlobal.formatDate(d, format, lang);
519
- }).join(this.o.multidateSeparator);
520
- },
521
-
522
- setStartDate: function(startDate){
523
- this._process_options({startDate: startDate});
524
- this.update();
525
- this.updateNavArrows();
526
- },
527
-
528
- setEndDate: function(endDate){
529
- this._process_options({endDate: endDate});
530
- this.update();
531
- this.updateNavArrows();
532
- },
533
-
534
- setDaysOfWeekDisabled: function(daysOfWeekDisabled){
535
- this._process_options({daysOfWeekDisabled: daysOfWeekDisabled});
536
- this.update();
537
- this.updateNavArrows();
538
- },
539
-
540
- place: function(){
541
- if (this.isInline)
542
- return;
543
- var calendarWidth = this.picker.outerWidth(),
544
- calendarHeight = this.picker.outerHeight(),
545
- visualPadding = 10,
546
- windowWidth = $window.width(),
547
- windowHeight = $window.height(),
548
- scrollTop = $window.scrollTop();
549
-
550
- var zIndex = parseInt(this.element.parents().filter(function(){
551
- return $(this).css('z-index') !== 'auto';
552
- }).first().css('z-index'))+10;
553
- var offset = this.component ? this.component.parent().offset() : this.element.offset();
554
- var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);
555
- var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);
556
- var left = offset.left,
557
- top = offset.top;
558
-
559
- this.picker.removeClass(
560
- 'datepicker-orient-top datepicker-orient-bottom '+
561
- 'datepicker-orient-right datepicker-orient-left'
562
- );
563
-
564
- if (this.o.orientation.x !== 'auto'){
565
- this.picker.addClass('datepicker-orient-' + this.o.orientation.x);
566
- if (this.o.orientation.x === 'right')
567
- left -= calendarWidth - width;
568
- }
569
- // auto x orientation is best-placement: if it crosses a window
570
- // edge, fudge it sideways
571
- else {
572
- // Default to left
573
- this.picker.addClass('datepicker-orient-left');
574
- if (offset.left < 0)
575
- left -= offset.left - visualPadding;
576
- else if (offset.left + calendarWidth > windowWidth)
577
- left = windowWidth - calendarWidth - visualPadding;
578
- }
579
-
580
- // auto y orientation is best-situation: top or bottom, no fudging,
581
- // decision based on which shows more of the calendar
582
- var yorient = this.o.orientation.y,
583
- top_overflow, bottom_overflow;
584
- if (yorient === 'auto'){
585
- top_overflow = -scrollTop + offset.top - calendarHeight;
586
- bottom_overflow = scrollTop + windowHeight - (offset.top + height + calendarHeight);
587
- if (Math.max(top_overflow, bottom_overflow) === bottom_overflow)
588
- yorient = 'top';
589
- else
590
- yorient = 'bottom';
591
- }
592
- this.picker.addClass('datepicker-orient-' + yorient);
593
- if (yorient === 'top')
594
- top += height;
595
- else
596
- top -= calendarHeight + parseInt(this.picker.css('padding-top'));
597
-
598
- this.picker.css({
599
- top: top,
600
- left: left,
601
- zIndex: zIndex
602
- });
603
- },
604
-
605
- _allow_update: true,
606
- update: function(){
607
- if (!this._allow_update)
608
- return;
609
-
610
- var oldDates = this.dates.copy(),
611
- dates = [],
612
- fromArgs = false;
613
- if (arguments.length){
614
- $.each(arguments, $.proxy(function(i, date){
615
- if (date instanceof Date)
616
- date = this._local_to_utc(date);
617
- dates.push(date);
618
- }, this));
619
- fromArgs = true;
620
- }
621
- else {
622
- dates = this.isInput
623
- ? this.element.val()
624
- : this.element.data('date') || this.element.find('input').val();
625
- if (dates && this.o.multidate)
626
- dates = dates.split(this.o.multidateSeparator);
627
- else
628
- dates = [dates];
629
- delete this.element.data().date;
630
- }
631
-
632
- dates = $.map(dates, $.proxy(function(date){
633
- return DPGlobal.parseDate(date, this.o.format, this.o.language);
634
- }, this));
635
- dates = $.grep(dates, $.proxy(function(date){
636
- return (
637
- date < this.o.startDate ||
638
- date > this.o.endDate ||
639
- !date
640
- );
641
- }, this), true);
642
- this.dates.replace(dates);
643
-
644
- if (this.dates.length)
645
- this.viewDate = new Date(this.dates.get(-1));
646
- else if (this.viewDate < this.o.startDate)
647
- this.viewDate = new Date(this.o.startDate);
648
- else if (this.viewDate > this.o.endDate)
649
- this.viewDate = new Date(this.o.endDate);
650
-
651
- if (fromArgs){
652
- // setting date by clicking
653
- this.setValue();
654
- }
655
- else if (dates.length){
656
- // setting date by typing
657
- if (String(oldDates) !== String(this.dates))
658
- this._trigger('changeDate');
659
- }
660
- if (!this.dates.length && oldDates.length)
661
- this._trigger('clearDate');
662
-
663
- this.fill();
664
- },
665
-
666
- fillDow: function(){
667
- var dowCnt = this.o.weekStart,
668
- html = '<tr>';
669
- if (this.o.calendarWeeks){
670
- var cell = '<th class="cw">&nbsp;</th>';
671
- html += cell;
672
- this.picker.find('.datepicker-days thead tr:first-child').prepend(cell);
673
- }
674
- while (dowCnt < this.o.weekStart + 7){
675
- html += '<th class="dow">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';
676
- }
677
- html += '</tr>';
678
- this.picker.find('.datepicker-days thead').append(html);
679
- },
680
-
681
- fillMonths: function(){
682
- var html = '',
683
- i = 0;
684
- while (i < 12){
685
- html += '<span class="month">'+dates[this.o.language].monthsShort[i++]+'</span>';
686
- }
687
- this.picker.find('.datepicker-months td').html(html);
688
- },
689
-
690
- setRange: function(range){
691
- if (!range || !range.length)
692
- delete this.range;
693
- else
694
- this.range = $.map(range, function(d){
695
- return d.valueOf();
696
- });
697
- this.fill();
698
- },
699
-
700
- getClassNames: function(date){
701
- var cls = [],
702
- year = this.viewDate.getUTCFullYear(),
703
- month = this.viewDate.getUTCMonth(),
704
- today = new Date();
705
- if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){
706
- cls.push('old');
707
- }
708
- else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){
709
- cls.push('new');
710
- }
711
- if (this.focusDate && date.valueOf() === this.focusDate.valueOf())
712
- cls.push('focused');
713
- // Compare internal UTC date with local today, not UTC today
714
- if (this.o.todayHighlight &&
715
- date.getUTCFullYear() === today.getFullYear() &&
716
- date.getUTCMonth() === today.getMonth() &&
717
- date.getUTCDate() === today.getDate()){
718
- cls.push('today');
719
- }
720
- if (this.dates.contains(date) !== -1)
721
- cls.push('active');
722
- if (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate ||
723
- $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){
724
- cls.push('disabled');
725
- }
726
- if (this.range){
727
- if (date > this.range[0] && date < this.range[this.range.length-1]){
728
- cls.push('range');
729
- }
730
- if ($.inArray(date.valueOf(), this.range) !== -1){
731
- cls.push('selected');
732
- }
733
- }
734
- return cls;
735
- },
736
-
737
- fill: function(){
738
- var d = new Date(this.viewDate),
739
- year = d.getUTCFullYear(),
740
- month = d.getUTCMonth(),
741
- startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,
742
- startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,
743
- endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,
744
- endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,
745
- todaytxt = dates[this.o.language].today || dates['en'].today || '',
746
- cleartxt = dates[this.o.language].clear || dates['en'].clear || '',
747
- tooltip;
748
- this.picker.find('.datepicker-days thead th.datepicker-switch')
749
- .text(dates[this.o.language].months[month]+' '+year);
750
- this.picker.find('tfoot th.today')
751
- .text(todaytxt)
752
- .toggle(this.o.todayBtn !== false);
753
- this.picker.find('tfoot th.clear')
754
- .text(cleartxt)
755
- .toggle(this.o.clearBtn !== false);
756
- this.updateNavArrows();
757
- this.fillMonths();
758
- var prevMonth = UTCDate(year, month-1, 28),
759
- day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());
760
- prevMonth.setUTCDate(day);
761
- prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);
762
- var nextMonth = new Date(prevMonth);
763
- nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);
764
- nextMonth = nextMonth.valueOf();
765
- var html = [];
766
- var clsName;
767
- while (prevMonth.valueOf() < nextMonth){
768
- if (prevMonth.getUTCDay() === this.o.weekStart){
769
- html.push('<tr>');
770
- if (this.o.calendarWeeks){
771
- // ISO 8601: First week contains first thursday.
772
- // ISO also states week starts on Monday, but we can be more abstract here.
773
- var
774
- // Start of current week: based on weekstart/current date
775
- ws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5),
776
- // Thursday of this week
777
- th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),
778
- // First Thursday of year, year from thursday
779
- yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),
780
- // Calendar week: ms between thursdays, div ms per day, div 7 days
781
- calWeek = (th - yth) / 864e5 / 7 + 1;
782
- html.push('<td class="cw">'+ calWeek +'</td>');
783
-
784
- }
785
- }
786
- clsName = this.getClassNames(prevMonth);
787
- clsName.push('day');
788
-
789
- if (this.o.beforeShowDay !== $.noop){
790
- var before = this.o.beforeShowDay(this._utc_to_local(prevMonth));
791
- if (before === undefined)
792
- before = {};
793
- else if (typeof(before) === 'boolean')
794
- before = {enabled: before};
795
- else if (typeof(before) === 'string')
796
- before = {classes: before};
797
- if (before.enabled === false)
798
- clsName.push('disabled');
799
- if (before.classes)
800
- clsName = clsName.concat(before.classes.split(/\s+/));
801
- if (before.tooltip)
802
- tooltip = before.tooltip;
803
- }
804
-
805
- clsName = $.unique(clsName);
806
- html.push('<td class="'+clsName.join(' ')+'"' + (tooltip ? ' title="'+tooltip+'"' : '') + '>'+prevMonth.getUTCDate() + '</td>');
807
- if (prevMonth.getUTCDay() === this.o.weekEnd){
808
- html.push('</tr>');
809
- }
810
- prevMonth.setUTCDate(prevMonth.getUTCDate()+1);
811
- }
812
- this.picker.find('.datepicker-days tbody').empty().append(html.join(''));
813
-
814
- var months = this.picker.find('.datepicker-months')
815
- .find('th:eq(1)')
816
- .text(year)
817
- .end()
818
- .find('span').removeClass('active');
819
-
820
- $.each(this.dates, function(i, d){
821
- if (d.getUTCFullYear() === year)
822
- months.eq(d.getUTCMonth()).addClass('active');
823
- });
824
-
825
- if (year < startYear || year > endYear){
826
- months.addClass('disabled');
827
- }
828
- if (year === startYear){
829
- months.slice(0, startMonth).addClass('disabled');
830
- }
831
- if (year === endYear){
832
- months.slice(endMonth+1).addClass('disabled');
833
- }
834
-
835
- html = '';
836
- year = parseInt(year/10, 10) * 10;
837
- var yearCont = this.picker.find('.datepicker-years')
838
- .find('th:eq(1)')
839
- .text(year + '-' + (year + 9))
840
- .end()
841
- .find('td');
842
- year -= 1;
843
- var years = $.map(this.dates, function(d){
844
- return d.getUTCFullYear();
845
- }),
846
- classes;
847
- for (var i = -1; i < 11; i++){
848
- classes = ['year'];
849
- if (i === -1)
850
- classes.push('old');
851
- else if (i === 10)
852
- classes.push('new');
853
- if ($.inArray(year, years) !== -1)
854
- classes.push('active');
855
- if (year < startYear || year > endYear)
856
- classes.push('disabled');
857
- html += '<span class="' + classes.join(' ') + '">'+year+'</span>';
858
- year += 1;
859
- }
860
- yearCont.html(html);
861
- },
862
-
863
- updateNavArrows: function(){
864
- if (!this._allow_update)
865
- return;
866
-
867
- var d = new Date(this.viewDate),
868
- year = d.getUTCFullYear(),
869
- month = d.getUTCMonth();
870
- switch (this.viewMode){
871
- case 0:
872
- if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){
873
- this.picker.find('.prev').css({visibility: 'hidden'});
874
- }
875
- else {
876
- this.picker.find('.prev').css({visibility: 'visible'});
877
- }
878
- if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){
879
- this.picker.find('.next').css({visibility: 'hidden'});
880
- }
881
- else {
882
- this.picker.find('.next').css({visibility: 'visible'});
883
- }
884
- break;
885
- case 1:
886
- case 2:
887
- if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()){
888
- this.picker.find('.prev').css({visibility: 'hidden'});
889
- }
890
- else {
891
- this.picker.find('.prev').css({visibility: 'visible'});
892
- }
893
- if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()){
894
- this.picker.find('.next').css({visibility: 'hidden'});
895
- }
896
- else {
897
- this.picker.find('.next').css({visibility: 'visible'});
898
- }
899
- break;
900
- }
901
- },
902
-
903
- click: function(e){
904
- e.preventDefault();
905
- var target = $(e.target).closest('span, td, th'),
906
- year, month, day;
907
- if (target.length === 1){
908
- switch (target[0].nodeName.toLowerCase()){
909
- case 'th':
910
- switch (target[0].className){
911
- case 'datepicker-switch':
912
- this.showMode(1);
913
- break;
914
- case 'prev':
915
- case 'next':
916
- var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1);
917
- switch (this.viewMode){
918
- case 0:
919
- this.viewDate = this.moveMonth(this.viewDate, dir);
920
- this._trigger('changeMonth', this.viewDate);
921
- break;
922
- case 1:
923
- case 2:
924
- this.viewDate = this.moveYear(this.viewDate, dir);
925
- if (this.viewMode === 1)
926
- this._trigger('changeYear', this.viewDate);
927
- break;
928
- }
929
- this.fill();
930
- break;
931
- case 'today':
932
- var date = new Date();
933
- date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
934
-
935
- this.showMode(-2);
936
- var which = this.o.todayBtn === 'linked' ? null : 'view';
937
- this._setDate(date, which);
938
- break;
939
- case 'clear':
940
- var element;
941
- if (this.isInput)
942
- element = this.element;
943
- else if (this.component)
944
- element = this.element.find('input');
945
- if (element)
946
- element.val("").change();
947
- this.update();
948
- this._trigger('changeDate');
949
- if (this.o.autoclose)
950
- this.hide();
951
- break;
952
- }
953
- break;
954
- case 'span':
955
- if (!target.is('.disabled')){
956
- this.viewDate.setUTCDate(1);
957
- if (target.is('.month')){
958
- day = 1;
959
- month = target.parent().find('span').index(target);
960
- year = this.viewDate.getUTCFullYear();
961
- this.viewDate.setUTCMonth(month);
962
- this._trigger('changeMonth', this.viewDate);
963
- if (this.o.minViewMode === 1){
964
- this._setDate(UTCDate(year, month, day));
965
- }
966
- }
967
- else {
968
- day = 1;
969
- month = 0;
970
- year = parseInt(target.text(), 10)||0;
971
- this.viewDate.setUTCFullYear(year);
972
- this._trigger('changeYear', this.viewDate);
973
- if (this.o.minViewMode === 2){
974
- this._setDate(UTCDate(year, month, day));
975
- }
976
- }
977
- this.showMode(-1);
978
- this.fill();
979
- }
980
- break;
981
- case 'td':
982
- if (target.is('.day') && !target.is('.disabled')){
983
- day = parseInt(target.text(), 10)||1;
984
- year = this.viewDate.getUTCFullYear();
985
- month = this.viewDate.getUTCMonth();
986
- if (target.is('.old')){
987
- if (month === 0){
988
- month = 11;
989
- year -= 1;
990
- }
991
- else {
992
- month -= 1;
993
- }
994
- }
995
- else if (target.is('.new')){
996
- if (month === 11){
997
- month = 0;
998
- year += 1;
999
- }
1000
- else {
1001
- month += 1;
1002
- }
1003
- }
1004
- this._setDate(UTCDate(year, month, day));
1005
- }
1006
- break;
1007
- }
1008
- }
1009
- if (this.picker.is(':visible') && this._focused_from){
1010
- $(this._focused_from).focus();
1011
- }
1012
- delete this._focused_from;
1013
- },
1014
-
1015
- _toggle_multidate: function(date){
1016
- var ix = this.dates.contains(date);
1017
- if (!date){
1018
- this.dates.clear();
1019
- }
1020
- else if (ix !== -1){
1021
- this.dates.remove(ix);
1022
- }
1023
- else {
1024
- this.dates.push(date);
1025
- }
1026
- if (typeof this.o.multidate === 'number')
1027
- while (this.dates.length > this.o.multidate)
1028
- this.dates.remove(0);
1029
- },
1030
-
1031
- _setDate: function(date, which){
1032
- if (!which || which === 'date')
1033
- this._toggle_multidate(date && new Date(date));
1034
- if (!which || which === 'view')
1035
- this.viewDate = date && new Date(date);
1036
-
1037
- this.fill();
1038
- this.setValue();
1039
- this._trigger('changeDate');
1040
- var element;
1041
- if (this.isInput){
1042
- element = this.element;
1043
- }
1044
- else if (this.component){
1045
- element = this.element.find('input');
1046
- }
1047
- if (element){
1048
- element.change();
1049
- }
1050
- if (this.o.autoclose && (!which || which === 'date')){
1051
- this.hide();
1052
- }
1053
- },
1054
-
1055
- moveMonth: function(date, dir){
1056
- if (!date)
1057
- return undefined;
1058
- if (!dir)
1059
- return date;
1060
- var new_date = new Date(date.valueOf()),
1061
- day = new_date.getUTCDate(),
1062
- month = new_date.getUTCMonth(),
1063
- mag = Math.abs(dir),
1064
- new_month, test;
1065
- dir = dir > 0 ? 1 : -1;
1066
- if (mag === 1){
1067
- test = dir === -1
1068
- // If going back one month, make sure month is not current month
1069
- // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)
1070
- ? function(){
1071
- return new_date.getUTCMonth() === month;
1072
- }
1073
- // If going forward one month, make sure month is as expected
1074
- // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)
1075
- : function(){
1076
- return new_date.getUTCMonth() !== new_month;
1077
- };
1078
- new_month = month + dir;
1079
- new_date.setUTCMonth(new_month);
1080
- // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11
1081
- if (new_month < 0 || new_month > 11)
1082
- new_month = (new_month + 12) % 12;
1083
- }
1084
- else {
1085
- // For magnitudes >1, move one month at a time...
1086
- for (var i=0; i < mag; i++)
1087
- // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...
1088
- new_date = this.moveMonth(new_date, dir);
1089
- // ...then reset the day, keeping it in the new month
1090
- new_month = new_date.getUTCMonth();
1091
- new_date.setUTCDate(day);
1092
- test = function(){
1093
- return new_month !== new_date.getUTCMonth();
1094
- };
1095
- }
1096
- // Common date-resetting loop -- if date is beyond end of month, make it
1097
- // end of month
1098
- while (test()){
1099
- new_date.setUTCDate(--day);
1100
- new_date.setUTCMonth(new_month);
1101
- }
1102
- return new_date;
1103
- },
1104
-
1105
- moveYear: function(date, dir){
1106
- return this.moveMonth(date, dir*12);
1107
- },
1108
-
1109
- dateWithinRange: function(date){
1110
- return date >= this.o.startDate && date <= this.o.endDate;
1111
- },
1112
-
1113
- keydown: function(e){
1114
- if (this.picker.is(':not(:visible)')){
1115
- if (e.keyCode === 27) // allow escape to hide and re-show picker
1116
- this.show();
1117
- return;
1118
- }
1119
- var dateChanged = false,
1120
- dir, newDate, newViewDate,
1121
- focusDate = this.focusDate || this.viewDate;
1122
- switch (e.keyCode){
1123
- case 27: // escape
1124
- if (this.focusDate){
1125
- this.focusDate = null;
1126
- this.viewDate = this.dates.get(-1) || this.viewDate;
1127
- this.fill();
1128
- }
1129
- else
1130
- this.hide();
1131
- e.preventDefault();
1132
- break;
1133
- case 37: // left
1134
- case 39: // right
1135
- if (!this.o.keyboardNavigation)
1136
- break;
1137
- dir = e.keyCode === 37 ? -1 : 1;
1138
- if (e.ctrlKey){
1139
- newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
1140
- newViewDate = this.moveYear(focusDate, dir);
1141
- this._trigger('changeYear', this.viewDate);
1142
- }
1143
- else if (e.shiftKey){
1144
- newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
1145
- newViewDate = this.moveMonth(focusDate, dir);
1146
- this._trigger('changeMonth', this.viewDate);
1147
- }
1148
- else {
1149
- newDate = new Date(this.dates.get(-1) || UTCToday());
1150
- newDate.setUTCDate(newDate.getUTCDate() + dir);
1151
- newViewDate = new Date(focusDate);
1152
- newViewDate.setUTCDate(focusDate.getUTCDate() + dir);
1153
- }
1154
- if (this.dateWithinRange(newDate)){
1155
- this.focusDate = this.viewDate = newViewDate;
1156
- this.setValue();
1157
- this.fill();
1158
- e.preventDefault();
1159
- }
1160
- break;
1161
- case 38: // up
1162
- case 40: // down
1163
- if (!this.o.keyboardNavigation)
1164
- break;
1165
- dir = e.keyCode === 38 ? -1 : 1;
1166
- if (e.ctrlKey){
1167
- newDate = this.moveYear(this.dates.get(-1) || UTCToday(), dir);
1168
- newViewDate = this.moveYear(focusDate, dir);
1169
- this._trigger('changeYear', this.viewDate);
1170
- }
1171
- else if (e.shiftKey){
1172
- newDate = this.moveMonth(this.dates.get(-1) || UTCToday(), dir);
1173
- newViewDate = this.moveMonth(focusDate, dir);
1174
- this._trigger('changeMonth', this.viewDate);
1175
- }
1176
- else {
1177
- newDate = new Date(this.dates.get(-1) || UTCToday());
1178
- newDate.setUTCDate(newDate.getUTCDate() + dir * 7);
1179
- newViewDate = new Date(focusDate);
1180
- newViewDate.setUTCDate(focusDate.getUTCDate() + dir * 7);
1181
- }
1182
- if (this.dateWithinRange(newDate)){
1183
- this.focusDate = this.viewDate = newViewDate;
1184
- this.setValue();
1185
- this.fill();
1186
- e.preventDefault();
1187
- }
1188
- break;
1189
- case 32: // spacebar
1190
- // Spacebar is used in manually typing dates in some formats.
1191
- // As such, its behavior should not be hijacked.
1192
- break;
1193
- case 13: // enter
1194
- focusDate = this.focusDate || this.dates.get(-1) || this.viewDate;
1195
- this._toggle_multidate(focusDate);
1196
- dateChanged = true;
1197
- this.focusDate = null;
1198
- this.viewDate = this.dates.get(-1) || this.viewDate;
1199
- this.setValue();
1200
- this.fill();
1201
- if (this.picker.is(':visible')){
1202
- e.preventDefault();
1203
- if (this.o.autoclose)
1204
- this.hide();
1205
- }
1206
- break;
1207
- case 9: // tab
1208
- this.focusDate = null;
1209
- this.viewDate = this.dates.get(-1) || this.viewDate;
1210
- this.fill();
1211
- this.hide();
1212
- break;
1213
- }
1214
- if (dateChanged){
1215
- if (this.dates.length)
1216
- this._trigger('changeDate');
1217
- else
1218
- this._trigger('clearDate');
1219
- var element;
1220
- if (this.isInput){
1221
- element = this.element;
1222
- }
1223
- else if (this.component){
1224
- element = this.element.find('input');
1225
- }
1226
- if (element){
1227
- element.change();
1228
- }
1229
- }
1230
- },
1231
-
1232
- showMode: function(dir){
1233
- if (dir){
1234
- this.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));
1235
- }
1236
- this.picker
1237
- .find('>div')
1238
- .hide()
1239
- .filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName)
1240
- .css('display', 'block');
1241
- this.updateNavArrows();
1242
- }
1243
- };
1244
-
1245
- var DateRangePicker = function(element, options){
1246
- this.element = $(element);
1247
- this.inputs = $.map(options.inputs, function(i){
1248
- return i.jquery ? i[0] : i;
1249
- });
1250
- delete options.inputs;
1251
-
1252
- $(this.inputs)
1253
- .datepicker(options)
1254
- .bind('changeDate', $.proxy(this.dateUpdated, this));
1255
-
1256
- this.pickers = $.map(this.inputs, function(i){
1257
- return $(i).data('datepicker');
1258
- });
1259
- this.updateDates();
1260
- };
1261
- DateRangePicker.prototype = {
1262
- updateDates: function(){
1263
- this.dates = $.map(this.pickers, function(i){
1264
- return i.getUTCDate();
1265
- });
1266
- this.updateRanges();
1267
- },
1268
- updateRanges: function(){
1269
- var range = $.map(this.dates, function(d){
1270
- return d.valueOf();
1271
- });
1272
- $.each(this.pickers, function(i, p){
1273
- p.setRange(range);
1274
- });
1275
- },
1276
- dateUpdated: function(e){
1277
- // `this.updating` is a workaround for preventing infinite recursion
1278
- // between `changeDate` triggering and `setUTCDate` calling. Until
1279
- // there is a better mechanism.
1280
- if (this.updating)
1281
- return;
1282
- this.updating = true;
1283
-
1284
- var dp = $(e.target).data('datepicker'),
1285
- new_date = dp.getUTCDate(),
1286
- i = $.inArray(e.target, this.inputs),
1287
- l = this.inputs.length;
1288
- if (i === -1)
1289
- return;
1290
-
1291
- $.each(this.pickers, function(i, p){
1292
- if (!p.getUTCDate())
1293
- p.setUTCDate(new_date);
1294
- });
1295
-
1296
- if (new_date < this.dates[i]){
1297
- // Date being moved earlier/left
1298
- while (i >= 0 && new_date < this.dates[i]){
1299
- this.pickers[i--].setUTCDate(new_date);
1300
- }
1301
- }
1302
- else if (new_date > this.dates[i]){
1303
- // Date being moved later/right
1304
- while (i < l && new_date > this.dates[i]){
1305
- this.pickers[i++].setUTCDate(new_date);
1306
- }
1307
- }
1308
- this.updateDates();
1309
-
1310
- delete this.updating;
1311
- },
1312
- remove: function(){
1313
- $.map(this.pickers, function(p){ p.remove(); });
1314
- delete this.element.data().datepicker;
1315
- }
1316
- };
1317
-
1318
- function opts_from_el(el, prefix){
1319
- // Derive options from element data-attrs
1320
- var data = $(el).data(),
1321
- out = {}, inkey,
1322
- replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');
1323
- prefix = new RegExp('^' + prefix.toLowerCase());
1324
- function re_lower(_,a){
1325
- return a.toLowerCase();
1326
- }
1327
- for (var key in data)
1328
- if (prefix.test(key)){
1329
- inkey = key.replace(replace, re_lower);
1330
- out[inkey] = data[key];
1331
- }
1332
- return out;
1333
- }
1334
-
1335
- function opts_from_locale(lang){
1336
- // Derive options from locale plugins
1337
- var out = {};
1338
- // Check if "de-DE" style date is available, if not language should
1339
- // fallback to 2 letter code eg "de"
1340
- if (!dates[lang]){
1341
- lang = lang.split('-')[0];
1342
- if (!dates[lang])
1343
- return;
1344
- }
1345
- var d = dates[lang];
1346
- $.each(locale_opts, function(i,k){
1347
- if (k in d)
1348
- out[k] = d[k];
1349
- });
1350
- return out;
1351
- }
1352
-
1353
- var old = $.fn.datepicker;
1354
- $.fn.datepicker = function(option){
1355
- var args = Array.apply(null, arguments);
1356
- args.shift();
1357
- var internal_return;
1358
- this.each(function(){
1359
- var $this = $(this),
1360
- data = $this.data('datepicker'),
1361
- options = typeof option === 'object' && option;
1362
- if (!data){
1363
- var elopts = opts_from_el(this, 'date'),
1364
- // Preliminary otions
1365
- xopts = $.extend({}, defaults, elopts, options),
1366
- locopts = opts_from_locale(xopts.language),
1367
- // Options priority: js args, data-attrs, locales, defaults
1368
- opts = $.extend({}, defaults, locopts, elopts, options);
1369
- if ($this.is('.input-daterange') || opts.inputs){
1370
- var ropts = {
1371
- inputs: opts.inputs || $this.find('input').toArray()
1372
- };
1373
- $this.data('datepicker', (data = new DateRangePicker(this, $.extend(opts, ropts))));
1374
- }
1375
- else {
1376
- $this.data('datepicker', (data = new Datepicker(this, opts)));
1377
- }
1378
- }
1379
- if (typeof option === 'string' && typeof data[option] === 'function'){
1380
- internal_return = data[option].apply(data, args);
1381
- if (internal_return !== undefined)
1382
- return false;
1383
- }
1384
- });
1385
- if (internal_return !== undefined)
1386
- return internal_return;
1387
- else
1388
- return this;
1389
- };
1390
-
1391
- var defaults = $.fn.datepicker.defaults = {
1392
- autoclose: false,
1393
- beforeShowDay: $.noop,
1394
- calendarWeeks: false,
1395
- clearBtn: false,
1396
- daysOfWeekDisabled: [],
1397
- endDate: Infinity,
1398
- forceParse: true,
1399
- format: 'mm/dd/yyyy',
1400
- keyboardNavigation: true,
1401
- language: 'en',
1402
- minViewMode: 0,
1403
- multidate: false,
1404
- multidateSeparator: ',',
1405
- orientation: "auto",
1406
- rtl: false,
1407
- startDate: -Infinity,
1408
- startView: 0,
1409
- todayBtn: false,
1410
- todayHighlight: false,
1411
- weekStart: 0
1412
- };
1413
- var locale_opts = $.fn.datepicker.locale_opts = [
1414
- 'format',
1415
- 'rtl',
1416
- 'weekStart'
1417
- ];
1418
- $.fn.datepicker.Constructor = Datepicker;
1419
- var dates = $.fn.datepicker.dates = {
1420
- en: {
1421
- days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
1422
- daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
1423
- daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],
1424
- months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
1425
- monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
1426
- today: "Today",
1427
- clear: "Clear"
1428
- }
1429
- };
1430
-
1431
- var DPGlobal = {
1432
- modes: [
1433
- {
1434
- clsName: 'days',
1435
- navFnc: 'Month',
1436
- navStep: 1
1437
- },
1438
- {
1439
- clsName: 'months',
1440
- navFnc: 'FullYear',
1441
- navStep: 1
1442
- },
1443
- {
1444
- clsName: 'years',
1445
- navFnc: 'FullYear',
1446
- navStep: 10
1447
- }],
1448
- isLeapYear: function(year){
1449
- return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));
1450
- },
1451
- getDaysInMonth: function(year, month){
1452
- return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
1453
- },
1454
- validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,
1455
- nonpunctuation: /[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g,
1456
- parseFormat: function(format){
1457
- // IE treats \0 as a string end in inputs (truncating the value),
1458
- // so it's a bad format delimiter, anyway
1459
- var separators = format.replace(this.validParts, '\0').split('\0'),
1460
- parts = format.match(this.validParts);
1461
- if (!separators || !separators.length || !parts || parts.length === 0){
1462
- throw new Error("Invalid date format.");
1463
- }
1464
- return {separators: separators, parts: parts};
1465
- },
1466
- parseDate: function(date, format, language){
1467
- if (!date)
1468
- return undefined;
1469
- if (date instanceof Date)
1470
- return date;
1471
- if (typeof format === 'string')
1472
- format = DPGlobal.parseFormat(format);
1473
- var part_re = /([\-+]\d+)([dmwy])/,
1474
- parts = date.match(/([\-+]\d+)([dmwy])/g),
1475
- part, dir, i;
1476
- if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){
1477
- date = new Date();
1478
- for (i=0; i < parts.length; i++){
1479
- part = part_re.exec(parts[i]);
1480
- dir = parseInt(part[1]);
1481
- switch (part[2]){
1482
- case 'd':
1483
- date.setUTCDate(date.getUTCDate() + dir);
1484
- break;
1485
- case 'm':
1486
- date = Datepicker.prototype.moveMonth.call(Datepicker.prototype, date, dir);
1487
- break;
1488
- case 'w':
1489
- date.setUTCDate(date.getUTCDate() + dir * 7);
1490
- break;
1491
- case 'y':
1492
- date = Datepicker.prototype.moveYear.call(Datepicker.prototype, date, dir);
1493
- break;
1494
- }
1495
- }
1496
- return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);
1497
- }
1498
- parts = date && date.match(this.nonpunctuation) || [];
1499
- date = new Date();
1500
- var parsed = {},
1501
- setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],
1502
- setters_map = {
1503
- yyyy: function(d,v){
1504
- return d.setUTCFullYear(v);
1505
- },
1506
- yy: function(d,v){
1507
- return d.setUTCFullYear(2000+v);
1508
- },
1509
- m: function(d,v){
1510
- if (isNaN(d))
1511
- return d;
1512
- v -= 1;
1513
- while (v < 0) v += 12;
1514
- v %= 12;
1515
- d.setUTCMonth(v);
1516
- while (d.getUTCMonth() !== v)
1517
- d.setUTCDate(d.getUTCDate()-1);
1518
- return d;
1519
- },
1520
- d: function(d,v){
1521
- return d.setUTCDate(v);
1522
- }
1523
- },
1524
- val, filtered;
1525
- setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
1526
- setters_map['dd'] = setters_map['d'];
1527
- date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
1528
- var fparts = format.parts.slice();
1529
- // Remove noop parts
1530
- if (parts.length !== fparts.length){
1531
- fparts = $(fparts).filter(function(i,p){
1532
- return $.inArray(p, setters_order) !== -1;
1533
- }).toArray();
1534
- }
1535
- // Process remainder
1536
- function match_part(){
1537
- var m = this.slice(0, parts[i].length),
1538
- p = parts[i].slice(0, m.length);
1539
- return m === p;
1540
- }
1541
- if (parts.length === fparts.length){
1542
- var cnt;
1543
- for (i=0, cnt = fparts.length; i < cnt; i++){
1544
- val = parseInt(parts[i], 10);
1545
- part = fparts[i];
1546
- if (isNaN(val)){
1547
- switch (part){
1548
- case 'MM':
1549
- filtered = $(dates[language].months).filter(match_part);
1550
- val = $.inArray(filtered[0], dates[language].months) + 1;
1551
- break;
1552
- case 'M':
1553
- filtered = $(dates[language].monthsShort).filter(match_part);
1554
- val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
1555
- break;
1556
- }
1557
- }
1558
- parsed[part] = val;
1559
- }
1560
- var _date, s;
1561
- for (i=0; i < setters_order.length; i++){
1562
- s = setters_order[i];
1563
- if (s in parsed && !isNaN(parsed[s])){
1564
- _date = new Date(date);
1565
- setters_map[s](_date, parsed[s]);
1566
- if (!isNaN(_date))
1567
- date = _date;
1568
- }
1569
- }
1570
- }
1571
- return date;
1572
- },
1573
- formatDate: function(date, format, language){
1574
- if (!date)
1575
- return '';
1576
- if (typeof format === 'string')
1577
- format = DPGlobal.parseFormat(format);
1578
- var val = {
1579
- d: date.getUTCDate(),
1580
- D: dates[language].daysShort[date.getUTCDay()],
1581
- DD: dates[language].days[date.getUTCDay()],
1582
- m: date.getUTCMonth() + 1,
1583
- M: dates[language].monthsShort[date.getUTCMonth()],
1584
- MM: dates[language].months[date.getUTCMonth()],
1585
- yy: date.getUTCFullYear().toString().substring(2),
1586
- yyyy: date.getUTCFullYear()
1587
- };
1588
- val.dd = (val.d < 10 ? '0' : '') + val.d;
1589
- val.mm = (val.m < 10 ? '0' : '') + val.m;
1590
- date = [];
1591
- var seps = $.extend([], format.separators);
1592
- for (var i=0, cnt = format.parts.length; i <= cnt; i++){
1593
- if (seps.length)
1594
- date.push(seps.shift());
1595
- date.push(val[format.parts[i]]);
1596
- }
1597
- return date.join('');
1598
- },
1599
- headTemplate: '<thead>'+
1600
- '<tr>'+
1601
- '<th class="prev">&laquo;</th>'+
1602
- '<th colspan="5" class="datepicker-switch"></th>'+
1603
- '<th class="next">&raquo;</th>'+
1604
- '</tr>'+
1605
- '</thead>',
1606
- contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
1607
- footTemplate: '<tfoot>'+
1608
- '<tr>'+
1609
- '<th colspan="7" class="today"></th>'+
1610
- '</tr>'+
1611
- '<tr>'+
1612
- '<th colspan="7" class="clear"></th>'+
1613
- '</tr>'+
1614
- '</tfoot>'
1615
- };
1616
- DPGlobal.template = '<div class="datepicker">'+
1617
- '<div class="datepicker-days">'+
1618
- '<table class=" table-condensed">'+
1619
- DPGlobal.headTemplate+
1620
- '<tbody></tbody>'+
1621
- DPGlobal.footTemplate+
1622
- '</table>'+
1623
- '</div>'+
1624
- '<div class="datepicker-months">'+
1625
- '<table class="table-condensed">'+
1626
- DPGlobal.headTemplate+
1627
- DPGlobal.contTemplate+
1628
- DPGlobal.footTemplate+
1629
- '</table>'+
1630
- '</div>'+
1631
- '<div class="datepicker-years">'+
1632
- '<table class="table-condensed">'+
1633
- DPGlobal.headTemplate+
1634
- DPGlobal.contTemplate+
1635
- DPGlobal.footTemplate+
1636
- '</table>'+
1637
- '</div>'+
1638
- '</div>';
1639
-
1640
- $.fn.datepicker.DPGlobal = DPGlobal;
1641
-
1642
-
1643
- /* DATEPICKER NO CONFLICT
1644
- * =================== */
1645
-
1646
- $.fn.datepicker.noConflict = function(){
1647
- $.fn.datepicker = old;
1648
- return this;
1649
- };
1650
-
1651
-
1652
- /* DATEPICKER DATA-API
1653
- * ================== */
1654
-
1655
- $(document).on(
1656
- 'focus.datepicker.data-api click.datepicker.data-api',
1657
- '[data-provide="datepicker"]',
1658
- function(e){
1659
- var $this = $(this);
1660
- if ($this.data('datepicker'))
1661
- return;
1662
- e.preventDefault();
1663
- // component click requires us to explicitly show it
1664
- $this.datepicker('show');
1665
- }
1666
- );
1667
- $(function(){
1668
- $('[data-provide="datepicker-inline"]').datepicker();
1669
- });
1670
-
1671
- }(window.jQuery));