asset_box 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +60 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +7 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +6 -0
  7. data/Gemfile.lock +35 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +43 -0
  10. data/Rakefile +6 -0
  11. data/asset_box.gemspec +42 -0
  12. data/assets/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
  13. data/assets/fonts/bootstrap/glyphicons-halflings-regular.svg +288 -0
  14. data/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  15. data/assets/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  16. data/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  17. data/assets/fonts/font-awesome/fa-brands-400.eot +0 -0
  18. data/assets/fonts/font-awesome/fa-brands-400.svg +3717 -0
  19. data/assets/fonts/font-awesome/fa-brands-400.ttf +0 -0
  20. data/assets/fonts/font-awesome/fa-brands-400.woff +0 -0
  21. data/assets/fonts/font-awesome/fa-brands-400.woff2 +0 -0
  22. data/assets/fonts/font-awesome/fa-regular-400.eot +0 -0
  23. data/assets/fonts/font-awesome/fa-regular-400.svg +801 -0
  24. data/assets/fonts/font-awesome/fa-regular-400.ttf +0 -0
  25. data/assets/fonts/font-awesome/fa-regular-400.woff +0 -0
  26. data/assets/fonts/font-awesome/fa-regular-400.woff2 +0 -0
  27. data/assets/fonts/font-awesome/fa-solid-900.eot +0 -0
  28. data/assets/fonts/font-awesome/fa-solid-900.svg +5028 -0
  29. data/assets/fonts/font-awesome/fa-solid-900.ttf +0 -0
  30. data/assets/fonts/font-awesome/fa-solid-900.woff +0 -0
  31. data/assets/fonts/font-awesome/fa-solid-900.woff2 +0 -0
  32. data/assets/images/bootstrap/bg.png +0 -0
  33. data/assets/images/bootstrap/bg_2.png +0 -0
  34. data/assets/images/bootstrap/bg_3.png +0 -0
  35. data/assets/images/bootstrap/bg_4.png +0 -0
  36. data/assets/images/bootstrap/bg_5.png +0 -0
  37. data/assets/images/bootstrap/dark_dots.png +0 -0
  38. data/assets/images/bootstrap/light_dots.png +0 -0
  39. data/assets/images/bootstrap/line.png +0 -0
  40. data/assets/images/bootstrap/line_detail.png +0 -0
  41. data/assets/images/bootstrap/note_dot.png +0 -0
  42. data/assets/images/bootstrap/timer-piece.png +0 -0
  43. data/assets/javascripts/app/bootstrap-datepicker.js +1395 -0
  44. data/assets/javascripts/app/bootstrap-fileupload.min.js +7 -0
  45. data/assets/javascripts/app/bootstrap-modal.js +378 -0
  46. data/assets/javascripts/app/bootstrap-modalmanager.js +423 -0
  47. data/assets/javascripts/app/bootstrap-switch.min.js +22 -0
  48. data/assets/javascripts/app/daterangepicker.js +1635 -0
  49. data/assets/javascripts/app/debounce.js +1492 -0
  50. data/assets/javascripts/app/jquery.appear.js +101 -0
  51. data/assets/javascripts/app/jquery.inputlimiter.1.3.1.min.js +11 -0
  52. data/assets/javascripts/app/jquery.mousewheel.js +84 -0
  53. data/assets/javascripts/app/jquery.serialScroll.min.js +7 -0
  54. data/assets/javascripts/app/moment.min.js +7 -0
  55. data/assets/javascripts/app/perfect-scrollbar.js +584 -0
  56. data/assets/javascripts/app/subview.js +392 -0
  57. data/assets/javascripts/app/velocity.min.js +8 -0
  58. data/assets/javascripts/asset_box.js +16 -0
  59. data/assets/javascripts/bootstrap-sprockets.js +12 -0
  60. data/assets/javascripts/bootstrap.js +2580 -0
  61. data/assets/javascripts/bootstrap.min.js +6 -0
  62. data/assets/javascripts/bootstrap/affix.js +164 -0
  63. data/assets/javascripts/bootstrap/alert.js +95 -0
  64. data/assets/javascripts/bootstrap/button.js +125 -0
  65. data/assets/javascripts/bootstrap/carousel.js +246 -0
  66. data/assets/javascripts/bootstrap/collapse.js +212 -0
  67. data/assets/javascripts/bootstrap/dropdown.js +165 -0
  68. data/assets/javascripts/bootstrap/modal.js +358 -0
  69. data/assets/javascripts/bootstrap/popover.js +123 -0
  70. data/assets/javascripts/bootstrap/scrollspy.js +172 -0
  71. data/assets/javascripts/bootstrap/tab.js +155 -0
  72. data/assets/javascripts/bootstrap/tooltip.js +677 -0
  73. data/assets/javascripts/bootstrap/transition.js +59 -0
  74. data/assets/stylesheets/_asset_box.scss +760 -0
  75. data/assets/stylesheets/_bootstrap-compass.scss +9 -0
  76. data/assets/stylesheets/_bootstrap-mincer.scss +19 -0
  77. data/assets/stylesheets/_bootstrap-sprockets.scss +9 -0
  78. data/assets/stylesheets/_bootstrap.scss +56 -0
  79. data/assets/stylesheets/_bootstrap_login.scss +166 -0
  80. data/assets/stylesheets/_font-awesome-compass.scss +5 -0
  81. data/assets/stylesheets/_font-awesome-sprockets.scss +5 -0
  82. data/assets/stylesheets/_font-awesome.scss +17 -0
  83. data/assets/stylesheets/_font-awesome_v4-shims.scss +6 -0
  84. data/assets/stylesheets/_load_bootstrap.scss +12 -0
  85. data/assets/stylesheets/app/_base.scss +136 -0
  86. data/assets/stylesheets/app/_buttons.scss +1149 -0
  87. data/assets/stylesheets/app/_calendar.scss +343 -0
  88. data/assets/stylesheets/app/_ckeditor.scss +123 -0
  89. data/assets/stylesheets/app/_date-picker.scss +193 -0
  90. data/assets/stylesheets/app/_daterangepicker.scss +269 -0
  91. data/assets/stylesheets/app/_dropdown-menu.scss +137 -0
  92. data/assets/stylesheets/app/_error.scss +84 -0
  93. data/assets/stylesheets/app/_file-upload.scss +16 -0
  94. data/assets/stylesheets/app/_footer.scss +59 -0
  95. data/assets/stylesheets/app/_form-elements.scss +273 -0
  96. data/assets/stylesheets/app/_gallery.scss +205 -0
  97. data/assets/stylesheets/app/_header.scss +158 -0
  98. data/assets/stylesheets/app/_horizontal-menu.scss +169 -0
  99. data/assets/stylesheets/app/_icons.scss +47 -0
  100. data/assets/stylesheets/app/_inputlimiter.scss +34 -0
  101. data/assets/stylesheets/app/_invoice.scss +53 -0
  102. data/assets/stylesheets/app/_lock-screen.scss +72 -0
  103. data/assets/stylesheets/app/_login.scss +105 -0
  104. data/assets/stylesheets/app/_main-container.scss +297 -0
  105. data/assets/stylesheets/app/_messages.scss +311 -0
  106. data/assets/stylesheets/app/_pageslide_left.scss +283 -0
  107. data/assets/stylesheets/app/_pageslide_right.scss +350 -0
  108. data/assets/stylesheets/app/_pagination.scss +254 -0
  109. data/assets/stylesheets/app/_panels.scss +589 -0
  110. data/assets/stylesheets/app/_perfect-scrollbar.scss +111 -0
  111. data/assets/stylesheets/app/_slidingbar.scss +42 -0
  112. data/assets/stylesheets/app/_subview.scss +342 -0
  113. data/assets/stylesheets/app/_tables.scss +68 -0
  114. data/assets/stylesheets/app/_tabs.scss +251 -0
  115. data/assets/stylesheets/app/_tags-input.scss +46 -0
  116. data/assets/stylesheets/app/_theme-style8.scss +308 -0
  117. data/assets/stylesheets/app/_timeline.scss +359 -0
  118. data/assets/stylesheets/app/_user-profile.scss +99 -0
  119. data/assets/stylesheets/app/_utilities.scss +643 -0
  120. data/assets/stylesheets/bootstrap/_alerts.scss +73 -0
  121. data/assets/stylesheets/bootstrap/_badges.scss +68 -0
  122. data/assets/stylesheets/bootstrap/_breadcrumbs.scss +28 -0
  123. data/assets/stylesheets/bootstrap/_button-groups.scss +244 -0
  124. data/assets/stylesheets/bootstrap/_buttons.scss +168 -0
  125. data/assets/stylesheets/bootstrap/_carousel.scss +271 -0
  126. data/assets/stylesheets/bootstrap/_close.scss +37 -0
  127. data/assets/stylesheets/bootstrap/_code.scss +69 -0
  128. data/assets/stylesheets/bootstrap/_component-animations.scss +38 -0
  129. data/assets/stylesheets/bootstrap/_dropdowns.scss +213 -0
  130. data/assets/stylesheets/bootstrap/_forms.scss +607 -0
  131. data/assets/stylesheets/bootstrap/_glyphicons.scss +307 -0
  132. data/assets/stylesheets/bootstrap/_grid.scss +94 -0
  133. data/assets/stylesheets/bootstrap/_input-groups.scss +171 -0
  134. data/assets/stylesheets/bootstrap/_jumbotron.scss +54 -0
  135. data/assets/stylesheets/bootstrap/_labels.scss +66 -0
  136. data/assets/stylesheets/bootstrap/_list-group.scss +128 -0
  137. data/assets/stylesheets/bootstrap/_media.scss +66 -0
  138. data/assets/stylesheets/bootstrap/_mixins.scss +40 -0
  139. data/assets/stylesheets/bootstrap/_modals.scss +150 -0
  140. data/assets/stylesheets/bootstrap/_navbar.scss +656 -0
  141. data/assets/stylesheets/bootstrap/_navs.scss +242 -0
  142. data/assets/stylesheets/bootstrap/_normalize.scss +427 -0
  143. data/assets/stylesheets/bootstrap/_pager.scss +54 -0
  144. data/assets/stylesheets/bootstrap/_pagination.scss +86 -0
  145. data/assets/stylesheets/bootstrap/_panels.scss +271 -0
  146. data/assets/stylesheets/bootstrap/_popovers.scss +126 -0
  147. data/assets/stylesheets/bootstrap/_print.scss +99 -0
  148. data/assets/stylesheets/bootstrap/_progress-bars.scss +87 -0
  149. data/assets/stylesheets/bootstrap/_responsive-embed.scss +35 -0
  150. data/assets/stylesheets/bootstrap/_responsive-utilities.scss +179 -0
  151. data/assets/stylesheets/bootstrap/_scaffolding.scss +161 -0
  152. data/assets/stylesheets/bootstrap/_tables.scss +234 -0
  153. data/assets/stylesheets/bootstrap/_theme.scss +295 -0
  154. data/assets/stylesheets/bootstrap/_thumbnails.scss +38 -0
  155. data/assets/stylesheets/bootstrap/_tooltip.scss +112 -0
  156. data/assets/stylesheets/bootstrap/_type.scss +298 -0
  157. data/assets/stylesheets/bootstrap/_utilities.scss +55 -0
  158. data/assets/stylesheets/bootstrap/_variables.scss +874 -0
  159. data/assets/stylesheets/bootstrap/_wells.scss +29 -0
  160. data/assets/stylesheets/bootstrap/mixins/_alerts.scss +15 -0
  161. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +12 -0
  162. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +18 -0
  163. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +61 -0
  164. data/assets/stylesheets/bootstrap/mixins/_center-block.scss +7 -0
  165. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +22 -0
  166. data/assets/stylesheets/bootstrap/mixins/_forms.scss +88 -0
  167. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +56 -0
  168. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +81 -0
  169. data/assets/stylesheets/bootstrap/mixins/_grid.scss +122 -0
  170. data/assets/stylesheets/bootstrap/mixins/_hide-text.scss +21 -0
  171. data/assets/stylesheets/bootstrap/mixins/_image.scss +28 -0
  172. data/assets/stylesheets/bootstrap/mixins/_labels.scss +12 -0
  173. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +32 -0
  174. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +10 -0
  175. data/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss +9 -0
  176. data/assets/stylesheets/bootstrap/mixins/_opacity.scss +7 -0
  177. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +24 -0
  178. data/assets/stylesheets/bootstrap/mixins/_panels.scss +24 -0
  179. data/assets/stylesheets/bootstrap/mixins/_progress-bar.scss +10 -0
  180. data/assets/stylesheets/bootstrap/mixins/_reset-filter.scss +8 -0
  181. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +18 -0
  182. data/assets/stylesheets/bootstrap/mixins/_resize.scss +6 -0
  183. data/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss +17 -0
  184. data/assets/stylesheets/bootstrap/mixins/_size.scss +10 -0
  185. data/assets/stylesheets/bootstrap/mixins/_tab-focus.scss +9 -0
  186. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +28 -0
  187. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +12 -0
  188. data/assets/stylesheets/bootstrap/mixins/_text-overflow.scss +8 -0
  189. data/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss +222 -0
  190. data/assets/stylesheets/font-awesome/_animated.scss +20 -0
  191. data/assets/stylesheets/font-awesome/_bordered-pulled.scss +20 -0
  192. data/assets/stylesheets/font-awesome/_core.scss +21 -0
  193. data/assets/stylesheets/font-awesome/_fixed-width.scss +6 -0
  194. data/assets/stylesheets/font-awesome/_icons.scss +1462 -0
  195. data/assets/stylesheets/font-awesome/_larger.scss +23 -0
  196. data/assets/stylesheets/font-awesome/_list.scss +18 -0
  197. data/assets/stylesheets/font-awesome/_mixins.scss +56 -0
  198. data/assets/stylesheets/font-awesome/_path.scss +56 -0
  199. data/assets/stylesheets/font-awesome/_rotated-flipped.scss +24 -0
  200. data/assets/stylesheets/font-awesome/_screen-reader.scss +5 -0
  201. data/assets/stylesheets/font-awesome/_shims.scss +2066 -0
  202. data/assets/stylesheets/font-awesome/_stacked.scss +31 -0
  203. data/assets/stylesheets/font-awesome/_variables.scss +1482 -0
  204. data/bin/console +14 -0
  205. data/bin/setup +8 -0
  206. data/lib/asset_box.rb +89 -0
  207. data/lib/asset_box/rails/engine.rb +22 -0
  208. data/lib/asset_box/rails/helpers.rb +17 -0
  209. data/lib/asset_box/rails/railtie.rb +13 -0
  210. data/lib/asset_box/version.rb +3 -0
  211. metadata +301 -0
@@ -0,0 +1,101 @@
1
+ /*
2
+ * jQuery appear plugin
3
+ *
4
+ * Copyright (c) 2012 Andrey Sidorov
5
+ * licensed under MIT license.
6
+ *
7
+ * https://github.com/morr/jquery.appear/
8
+ *
9
+ * Version: 0.3.3
10
+ */
11
+ (function($) {
12
+ var selectors = [];
13
+
14
+ var check_binded = false;
15
+ var check_lock = false;
16
+ var defaults = {
17
+ interval: 250,
18
+ force_process: false
19
+ }
20
+ var $window = $(window);
21
+
22
+ var $prior_appeared;
23
+
24
+ function process() {
25
+ check_lock = false;
26
+ for (var index = 0; index < selectors.length; index++) {
27
+ var $appeared = $(selectors[index]).filter(function() {
28
+ return $(this).is(':appeared');
29
+ });
30
+
31
+ $appeared.trigger('appear', [$appeared]);
32
+
33
+ if ($prior_appeared) {
34
+ var $disappeared = $prior_appeared.not($appeared);
35
+ $disappeared.trigger('disappear', [$disappeared]);
36
+ }
37
+ $prior_appeared = $appeared;
38
+ }
39
+ }
40
+
41
+ // "appeared" custom filter
42
+ $.expr[':']['appeared'] = function(element) {
43
+ var $element = $(element);
44
+ if (!$element.is(':visible')) {
45
+ return false;
46
+ }
47
+
48
+ var window_left = $window.scrollLeft();
49
+ var window_top = $window.scrollTop();
50
+ var offset = $element.offset();
51
+ var left = offset.left;
52
+ var top = offset.top;
53
+
54
+ if (top + $element.height() >= window_top &&
55
+ top - ($element.data('appear-top-offset') || 0) <= window_top + $window.height() &&
56
+ left + $element.width() >= window_left &&
57
+ left - ($element.data('appear-left-offset') || 0) <= window_left + $window.width()) {
58
+ return true;
59
+ } else {
60
+ return false;
61
+ }
62
+ }
63
+
64
+ $.fn.extend({
65
+ // watching for element's appearance in browser viewport
66
+ appear: function(options) {
67
+ var opts = $.extend({}, defaults, options || {});
68
+ var selector = this.selector || this;
69
+ if (!check_binded) {
70
+ var on_check = function() {
71
+ if (check_lock) {
72
+ return;
73
+ }
74
+ check_lock = true;
75
+
76
+ setTimeout(process, opts.interval);
77
+ };
78
+
79
+ $(window).scroll(on_check).resize(on_check);
80
+ check_binded = true;
81
+ }
82
+
83
+ if (opts.force_process) {
84
+ setTimeout(process, opts.interval);
85
+ }
86
+ selectors.push(selector);
87
+ return $(selector);
88
+ }
89
+ });
90
+
91
+ $.extend({
92
+ // force elements's appearance check
93
+ force_appear: function() {
94
+ if (check_binded) {
95
+ process();
96
+ return true;
97
+ };
98
+ return false;
99
+ }
100
+ });
101
+ })(jQuery);
@@ -0,0 +1,11 @@
1
+ (function($){$.fn.inputlimiter=function(options){var opts=$.extend({},$.fn.inputlimiter.defaults,options),$elements=$(this);if(opts.boxAttach&&!$('#'+opts.boxId).length){$('<div/>').appendTo("body").attr({id:opts.boxId,'class':opts.boxClass}).css({'position':'absolute'}).hide();if($.fn.bgiframe){$('#'+opts.boxId).bgiframe();}}
2
+ var inputlimiterKeyup=function(e){var $this=$(this),count=counter($this.val());if(!opts.allowExceed&&count>opts.limit){$this.val(truncater($this.val()));}
3
+ if(opts.boxAttach){$('#'+opts.boxId).css({'width':$this.outerWidth()-($('#'+opts.boxId).outerWidth()-$('#'+opts.boxId).width())+'px','left':$this.offset().left+'px','top':($this.offset().top+$this.outerHeight())-1+'px','z-index':2000});}
4
+ var charsRemaining=(opts.limit-count>0?opts.limit-count:0),remText=opts.remTextFilter(opts,charsRemaining),limitText=opts.limitTextFilter(opts);if(opts.limitTextShow){$('#'+opts.boxId).html(remText+' '+limitText);var textWidth=$("<span/>").appendTo("body").attr({id:'19cc9195583bfae1fad88e19d443be7a','class':opts.boxClass}).html(remText+' '+limitText).innerWidth();$("#19cc9195583bfae1fad88e19d443be7a").remove();if(textWidth>$('#'+opts.boxId).innerWidth()){$('#'+opts.boxId).html(remText+'<br />'+limitText);}
5
+ $('#'+opts.boxId).show();}else{$('#'+opts.boxId).html(remText).show();}},inputlimiterKeypress=function(e){var count=counter($(this).val());if(!opts.allowExceed&&count>opts.limit){var modifierKeyPressed=e.ctrlKey||e.altKey||e.metaKey;if(!modifierKeyPressed&&(e.which>=32&&e.which<=122)&&this.selectionStart===this.selectionEnd){return false;}}},inputlimiterBlur=function(){var $this=$(this);count=counter($this.val());if(!opts.allowExceed&&count>opts.limit){$this.val(truncater($this.val()));}
6
+ if(opts.boxAttach){$('#'+opts.boxId).fadeOut('fast');}else if(opts.remTextHideOnBlur){var limitText=opts.limitText;limitText=limitText.replace(/\%n/g,opts.limit);limitText=limitText.replace(/\%s/g,(opts.limit===1?'':'s'));$('#'+opts.boxId).html(limitText);}},counter=function(value){if(opts.limitBy.toLowerCase()==="words"){return(value.length>0?$.trim(value).replace(/\ +(?= )/g,'').split(' ').length:0);}
7
+ var count=value.length,newlines=value.match(/\n/g);if(newlines&&opts.lineReturnCount>1){count+=newlines.length*(opts.lineReturnCount-1);}
8
+ return count;},truncater=function(value){if(opts.limitBy.toLowerCase()==="words"){return $.trim(value).replace(/\ +(?= )/g,'').split(' ').splice(0,opts.limit).join(' ')+' ';}
9
+ return value.substring(0,opts.limit);};$(this).each(function(i){var $this=$(this);if((!options||!options.limit)&&opts.useMaxlength&&parseInt($this.attr('maxlength'))>0&&parseInt($this.attr('maxlength'))!=opts.limit){$this.inputlimiter($.extend({},opts,{limit:parseInt($this.attr('maxlength'))}));}else{if(!opts.allowExceed&&opts.useMaxlength&&opts.limitBy.toLowerCase()==="characters"){$this.attr('maxlength',opts.limit);}
10
+ $this.unbind('.inputlimiter');$this.bind('keyup.inputlimiter',inputlimiterKeyup);$this.bind('keypress.inputlimiter',inputlimiterKeypress);$this.bind('blur.inputlimiter',inputlimiterBlur);}});};$.fn.inputlimiter.remtextfilter=function(opts,charsRemaining){var remText=opts.remText;if(charsRemaining===0&&opts.remFullText!==null){remText=opts.remFullText;}
11
+ remText=remText.replace(/\%n/g,charsRemaining);remText=remText.replace(/\%s/g,(opts.zeroPlural?(charsRemaining===1?'':'s'):(charsRemaining<=1?'':'s')));return remText;};$.fn.inputlimiter.limittextfilter=function(opts){var limitText=opts.limitText;limitText=limitText.replace(/\%n/g,opts.limit);limitText=limitText.replace(/\%s/g,(opts.limit<=1?'':'s'));return limitText;};$.fn.inputlimiter.defaults={limit:255,boxAttach:true,boxId:'limiterBox',boxClass:'limiterBox',remText:'%n character%s remaining.',remTextFilter:$.fn.inputlimiter.remtextfilter,remTextHideOnBlur:true,remFullText:null,limitTextShow:true,limitText:'Field limited to %n character%s.',limitTextFilter:$.fn.inputlimiter.limittextfilter,zeroPlural:true,allowExceed:false,useMaxlength:true,limitBy:'characters',lineReturnCount:1};})(jQuery);
@@ -0,0 +1,84 @@
1
+ /*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
2
+ * Licensed under the MIT License (LICENSE.txt).
3
+ *
4
+ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
5
+ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
6
+ * Thanks to: Seamus Leahy for adding deltaX and deltaY
7
+ *
8
+ * Version: 3.0.6
9
+ *
10
+ * Requires: 1.2.2+
11
+ */
12
+
13
+ (function($) {
14
+
15
+ var types = ['DOMMouseScroll', 'mousewheel'];
16
+
17
+ if ($.event.fixHooks) {
18
+ for ( var i=types.length; i; ) {
19
+ $.event.fixHooks[ types[--i] ] = $.event.mouseHooks;
20
+ }
21
+ }
22
+
23
+ $.event.special.mousewheel = {
24
+ setup: function() {
25
+ if ( this.addEventListener ) {
26
+ for ( var i=types.length; i; ) {
27
+ this.addEventListener( types[--i], handler, false );
28
+ }
29
+ } else {
30
+ this.onmousewheel = handler;
31
+ }
32
+ },
33
+
34
+ teardown: function() {
35
+ if ( this.removeEventListener ) {
36
+ for ( var i=types.length; i; ) {
37
+ this.removeEventListener( types[--i], handler, false );
38
+ }
39
+ } else {
40
+ this.onmousewheel = null;
41
+ }
42
+ }
43
+ };
44
+
45
+ $.fn.extend({
46
+ mousewheel: function(fn) {
47
+ return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
48
+ },
49
+
50
+ unmousewheel: function(fn) {
51
+ return this.unbind("mousewheel", fn);
52
+ }
53
+ });
54
+
55
+
56
+ function handler(event) {
57
+ var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
58
+ event = $.event.fix(orgEvent);
59
+ event.type = "mousewheel";
60
+
61
+ // Old school scrollwheel delta
62
+ if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; }
63
+ if ( orgEvent.detail ) { delta = -orgEvent.detail/3; }
64
+
65
+ // New school multidimensional scroll (touchpads) deltas
66
+ deltaY = delta;
67
+
68
+ // Gecko
69
+ if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
70
+ deltaY = 0;
71
+ deltaX = -1*delta;
72
+ }
73
+
74
+ // Webkit
75
+ if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
76
+ if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
77
+
78
+ // Add event and delta to the front of the arguments
79
+ args.unshift(event, delta, deltaX, deltaY);
80
+
81
+ return ($.event.dispatch || $.event.handle).apply(this, args);
82
+ }
83
+
84
+ })(jQuery);
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Copyright (c) 2007-2014 Ariel Flesler - aflesler<a>gmail<d>com | http://flesler.blogspot.com
3
+ * Licensed under MIT
4
+ * @author Ariel Flesler
5
+ * @version 1.4.11
6
+ */
7
+ ;(function(a){if(typeof define==='function'&&define.amd){define(['jquery'],a)}else{a(jQuery)}}(function($){var j=$.scrollTo=function(a,b,c){return $(window).scrollTo(a,b,c)};j.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1,limit:true};j.window=function(a){return $(window)._scrollable()};$.fn._scrollable=function(){return this.map(function(){var a=this,isWin=!a.nodeName||$.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!isWin)return a;var b=(a.contentWindow||a).document||a.ownerDocument||a;return/webkit/i.test(navigator.userAgent)||b.compatMode=='BackCompat'?b.body:b.documentElement})};$.fn.scrollTo=function(f,g,h){if(typeof g=='object'){h=g;g=0}if(typeof h=='function')h={onAfter:h};if(f=='max')f=9e9;h=$.extend({},j.defaults,h);g=g||h.duration;h.queue=h.queue&&h.axis.length>1;if(h.queue)g/=2;h.offset=both(h.offset);h.over=both(h.over);return this._scrollable().each(function(){if(f==null)return;var d=this,$elem=$(d),targ=f,toff,attr={},win=$elem.is('html,body');switch(typeof targ){case'number':case'string':if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break}targ=$(targ,this);if(!targ.length)return;case'object':if(targ.is||targ.style)toff=(targ=$(targ)).offset()}var e=$.isFunction(h.offset)&&h.offset(d,targ)||h.offset;$.each(h.axis.split(''),function(i,a){var b=a=='x'?'Left':'Top',pos=b.toLowerCase(),key='scroll'+b,old=d[key],max=j.max(d,a);if(toff){attr[key]=toff[pos]+(win?0:old-$elem.offset()[pos]);if(h.margin){attr[key]-=parseInt(targ.css('margin'+b))||0;attr[key]-=parseInt(targ.css('border'+b+'Width'))||0}attr[key]+=e[pos]||0;if(h.over[pos])attr[key]+=targ[a=='x'?'width':'height']()*h.over[pos]}else{var c=targ[pos];attr[key]=c.slice&&c.slice(-1)=='%'?parseFloat(c)/100*max:c}if(h.limit&&/^\d+$/.test(attr[key]))attr[key]=attr[key]<=0?0:Math.min(attr[key],max);if(!i&&h.queue){if(old!=attr[key])animate(h.onAfterFirst);delete attr[key]}});animate(h.onAfter);function animate(a){$elem.animate(attr,g,h.easing,a&&function(){a.call(this,targ,h)})}}).end()};j.max=function(a,b){var c=b=='x'?'Width':'Height',scroll='scroll'+c;if(!$(a).is('html,body'))return a[scroll]-$(a)[c.toLowerCase()]();var d='client'+c,html=a.ownerDocument.documentElement,body=a.ownerDocument.body;return Math.max(html[scroll],body[scroll])-Math.min(html[d],body[d])};function both(a){return $.isFunction(a)||typeof a=='object'?a:{top:a,left:a}};return j}));(function(a){a.isScrollToFixed=function(b){return !!a(b).data("ScrollToFixed")};a.ScrollToFixed=function(d,i){var l=this;l.$el=a(d);l.el=d;l.$el.data("ScrollToFixed",l);var c=false;var G=l.$el;var H;var E;var e;var y;var D=0;var q=0;var j=-1;var f=-1;var t=null;var z;var g;function u(){G.trigger("preUnfixed.ScrollToFixed");k();G.trigger("unfixed.ScrollToFixed");f=-1;D=G.offset().top;q=G.offset().left;if(l.options.offsets){q+=(G.offset().left-G.position().left)}if(j==-1){j=q}H=G.css("position");c=true;if(l.options.bottom!=-1){G.trigger("preFixed.ScrollToFixed");w();G.trigger("fixed.ScrollToFixed")}}function n(){var I=l.options.limit;if(!I){return 0}if(typeof(I)==="function"){return I.apply(G)}return I}function p(){return H==="fixed"}function x(){return H==="absolute"}function h(){return !(p()||x())}function w(){if(!p()){t.css({display:G.css("display"),width:G.outerWidth(true),height:G.outerHeight(true),"float":G.css("float")});cssOptions={"z-index":l.options.zIndex,position:"fixed",top:l.options.bottom==-1?s():"",bottom:l.options.bottom==-1?"":l.options.bottom,"margin-left":"0px"};if(!l.options.dontSetWidth){cssOptions.width=G.width()}G.css(cssOptions);G.addClass(l.options.baseClassName);if(l.options.className){G.addClass(l.options.className)}H="fixed"}}function b(){var J=n();var I=q;if(l.options.removeOffsets){I="";J=J-D}cssOptions={position:"absolute",top:J,left:I,"margin-left":"0px",bottom:""};if(!l.options.dontSetWidth){cssOptions.width=G.width()}G.css(cssOptions);H="absolute"}function k(){if(!h()){f=-1;t.css("display","none");G.css({"z-index":y,width:"",position:E,left:"",top:e,"margin-left":""});G.removeClass("scroll-to-fixed-fixed");if(l.options.className){G.removeClass(l.options.className)}H=null}}function v(I){if(I!=f){G.css("left",q-I);f=I}}function s(){var I=l.options.marginTop;if(!I){return 0}if(typeof(I)==="function"){return I.apply(G)}return I}function A(){if(!a.isScrollToFixed(G)){return}var K=c;if(!c){u()}else{if(h()){D=G.offset().top;q=G.offset().left}}var I=a(window).scrollLeft();var L=a(window).scrollTop();var J=n();if(l.options.minWidth&&a(window).width()<l.options.minWidth){if(!h()||!K){o();G.trigger("preUnfixed.ScrollToFixed");k();G.trigger("unfixed.ScrollToFixed")}}else{if(l.options.maxWidth&&a(window).width()>l.options.maxWidth){if(!h()||!K){o();G.trigger("preUnfixed.ScrollToFixed");k();G.trigger("unfixed.ScrollToFixed")}}else{if(l.options.bottom==-1){if(J>0&&L>=J-s()){if(!x()||!K){o();G.trigger("preAbsolute.ScrollToFixed");b();G.trigger("unfixed.ScrollToFixed")}}else{if(L>=D-s()){if(!p()||!K){o();G.trigger("preFixed.ScrollToFixed");w();f=-1;G.trigger("fixed.ScrollToFixed")}v(I)}else{if(!h()||!K){o();G.trigger("preUnfixed.ScrollToFixed");k();G.trigger("unfixed.ScrollToFixed")}}}}else{if(J>0){if(L+a(window).height()-G.outerHeight(true)>=J-(s()||-m())){if(p()){o();G.trigger("preUnfixed.ScrollToFixed");if(E==="absolute"){b()}else{k()}G.trigger("unfixed.ScrollToFixed")}}else{if(!p()){o();G.trigger("preFixed.ScrollToFixed");w()}v(I);G.trigger("fixed.ScrollToFixed")}}else{v(I)}}}}}function m(){if(!l.options.bottom){return 0}return l.options.bottom}function o(){var I=G.css("position");if(I=="absolute"){G.trigger("postAbsolute.ScrollToFixed")}else{if(I=="fixed"){G.trigger("postFixed.ScrollToFixed")}else{G.trigger("postUnfixed.ScrollToFixed")}}}var C=function(I){if(G.is(":visible")){c=false;A()}};var F=function(I){(!!window.requestAnimationFrame)?requestAnimationFrame(A):A()};var B=function(){var J=document.body;if(document.createElement&&J&&J.appendChild&&J.removeChild){var L=document.createElement("div");if(!L.getBoundingClientRect){return null}L.innerHTML="x";L.style.cssText="position:fixed;top:100px;";J.appendChild(L);var M=J.style.height,N=J.scrollTop;J.style.height="3000px";J.scrollTop=500;var I=L.getBoundingClientRect().top;J.style.height=M;var K=(I===100);J.removeChild(L);J.scrollTop=N;return K}return null};var r=function(I){I=I||window.event;if(I.preventDefault){I.preventDefault()}I.returnValue=false};l.init=function(){l.options=a.extend({},a.ScrollToFixed.defaultOptions,i);y=G.css("z-index");l.$el.css("z-index",l.options.zIndex);t=a("<div />");H=G.css("position");E=G.css("position");e=G.css("top");if(h()){l.$el.after(t)}a(window).bind("resize.ScrollToFixed",C);a(window).bind("scroll.ScrollToFixed",F);if(l.options.preFixed){G.bind("preFixed.ScrollToFixed",l.options.preFixed)}if(l.options.postFixed){G.bind("postFixed.ScrollToFixed",l.options.postFixed)}if(l.options.preUnfixed){G.bind("preUnfixed.ScrollToFixed",l.options.preUnfixed)}if(l.options.postUnfixed){G.bind("postUnfixed.ScrollToFixed",l.options.postUnfixed)}if(l.options.preAbsolute){G.bind("preAbsolute.ScrollToFixed",l.options.preAbsolute)}if(l.options.postAbsolute){G.bind("postAbsolute.ScrollToFixed",l.options.postAbsolute)}if(l.options.fixed){G.bind("fixed.ScrollToFixed",l.options.fixed)}if(l.options.unfixed){G.bind("unfixed.ScrollToFixed",l.options.unfixed)}if(l.options.spacerClass){t.addClass(l.options.spacerClass)}G.bind("resize.ScrollToFixed",function(){t.height(G.height())});G.bind("scroll.ScrollToFixed",function(){G.trigger("preUnfixed.ScrollToFixed");k();G.trigger("unfixed.ScrollToFixed");A()});G.bind("detach.ScrollToFixed",function(I){r(I);G.trigger("preUnfixed.ScrollToFixed");k();G.trigger("unfixed.ScrollToFixed");a(window).unbind("resize.ScrollToFixed",C);a(window).unbind("scroll.ScrollToFixed",F);G.unbind(".ScrollToFixed");t.remove();l.$el.removeData("ScrollToFixed")});C()};l.init()};a.ScrollToFixed.defaultOptions={marginTop:0,limit:0,bottom:-1,zIndex:1000,baseClassName:"scroll-to-fixed-fixed"};a.fn.scrollToFixed=function(b){return this.each(function(){(new a.ScrollToFixed(this,b))})}})(jQuery);
@@ -0,0 +1,7 @@
1
+ //! moment.js
2
+ //! version : 2.13.0
3
+ //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
4
+ //! license : MIT
5
+ //! momentjs.com
6
+ !function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return fd.apply(null,arguments)}function b(a){fd=a}function c(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function d(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function e(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function f(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function g(a,b){for(var c in b)f(b,c)&&(a[c]=b[c]);return f(b,"toString")&&(a.toString=b.toString),f(b,"valueOf")&&(a.valueOf=b.valueOf),a}function h(a,b,c,d){return Ja(a,b,c,d,!0).utc()}function i(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null}}function j(a){return null==a._pf&&(a._pf=i()),a._pf}function k(a){if(null==a._isValid){var b=j(a),c=gd.call(b.parsedDateParts,function(a){return null!=a});a._isValid=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.invalidWeekday&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated&&(!b.meridiem||b.meridiem&&c),a._strict&&(a._isValid=a._isValid&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour)}return a._isValid}function l(a){var b=h(NaN);return null!=a?g(j(b),a):j(b).userInvalidated=!0,b}function m(a){return void 0===a}function n(a,b){var c,d,e;if(m(b._isAMomentObject)||(a._isAMomentObject=b._isAMomentObject),m(b._i)||(a._i=b._i),m(b._f)||(a._f=b._f),m(b._l)||(a._l=b._l),m(b._strict)||(a._strict=b._strict),m(b._tzm)||(a._tzm=b._tzm),m(b._isUTC)||(a._isUTC=b._isUTC),m(b._offset)||(a._offset=b._offset),m(b._pf)||(a._pf=j(b)),m(b._locale)||(a._locale=b._locale),hd.length>0)for(c in hd)d=hd[c],e=b[d],m(e)||(a[d]=e);return a}function o(b){n(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),id===!1&&(id=!0,a.updateOffset(this),id=!1)}function p(a){return a instanceof o||null!=a&&null!=a._isAMomentObject}function q(a){return 0>a?Math.ceil(a):Math.floor(a)}function r(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=q(b)),c}function s(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&r(a[d])!==r(b[d]))&&g++;return g+f}function t(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function u(b,c){var d=!0;return g(function(){return null!=a.deprecationHandler&&a.deprecationHandler(null,b),d&&(t(b+"\nArguments: "+Array.prototype.slice.call(arguments).join(", ")+"\n"+(new Error).stack),d=!1),c.apply(this,arguments)},c)}function v(b,c){null!=a.deprecationHandler&&a.deprecationHandler(b,c),jd[b]||(t(c),jd[b]=!0)}function w(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}function x(a){return"[object Object]"===Object.prototype.toString.call(a)}function y(a){var b,c;for(c in a)b=a[c],w(b)?this[c]=b:this["_"+c]=b;this._config=a,this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function z(a,b){var c,d=g({},a);for(c in b)f(b,c)&&(x(a[c])&&x(b[c])?(d[c]={},g(d[c],a[c]),g(d[c],b[c])):null!=b[c]?d[c]=b[c]:delete d[c]);return d}function A(a){null!=a&&this.set(a)}function B(a){return a?a.toLowerCase().replace("_","-"):a}function C(a){for(var b,c,d,e,f=0;f<a.length;){for(e=B(a[f]).split("-"),b=e.length,c=B(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=D(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&s(e,c,!0)>=b-1)break;b--}f++}return null}function D(a){var b=null;if(!nd[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=ld._abbr,require("./locale/"+a),E(b)}catch(c){}return nd[a]}function E(a,b){var c;return a&&(c=m(b)?H(a):F(a,b),c&&(ld=c)),ld._abbr}function F(a,b){return null!==b?(b.abbr=a,null!=nd[a]?(v("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale"),b=z(nd[a]._config,b)):null!=b.parentLocale&&(null!=nd[b.parentLocale]?b=z(nd[b.parentLocale]._config,b):v("parentLocaleUndefined","specified parentLocale is not defined yet")),nd[a]=new A(b),E(a),nd[a]):(delete nd[a],null)}function G(a,b){if(null!=b){var c;null!=nd[a]&&(b=z(nd[a]._config,b)),c=new A(b),c.parentLocale=nd[a],nd[a]=c,E(a)}else null!=nd[a]&&(null!=nd[a].parentLocale?nd[a]=nd[a].parentLocale:null!=nd[a]&&delete nd[a]);return nd[a]}function H(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return ld;if(!c(a)){if(b=D(a))return b;a=[a]}return C(a)}function I(){return kd(nd)}function J(a,b){var c=a.toLowerCase();od[c]=od[c+"s"]=od[b]=a}function K(a){return"string"==typeof a?od[a]||od[a.toLowerCase()]:void 0}function L(a){var b,c,d={};for(c in a)f(a,c)&&(b=K(c),b&&(d[b]=a[c]));return d}function M(b,c){return function(d){return null!=d?(O(this,b,d),a.updateOffset(this,c),this):N(this,b)}}function N(a,b){return a.isValid()?a._d["get"+(a._isUTC?"UTC":"")+b]():NaN}function O(a,b,c){a.isValid()&&a._d["set"+(a._isUTC?"UTC":"")+b](c)}function P(a,b){var c;if("object"==typeof a)for(c in a)this.set(c,a[c]);else if(a=K(a),w(this[a]))return this[a](b);return this}function Q(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function R(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(sd[a]=e),b&&(sd[b[0]]=function(){return Q(e.apply(this,arguments),b[1],b[2])}),c&&(sd[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function S(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function T(a){var b,c,d=a.match(pd);for(b=0,c=d.length;c>b;b++)sd[d[b]]?d[b]=sd[d[b]]:d[b]=S(d[b]);return function(b){var e,f="";for(e=0;c>e;e++)f+=d[e]instanceof Function?d[e].call(b,a):d[e];return f}}function U(a,b){return a.isValid()?(b=V(b,a.localeData()),rd[b]=rd[b]||T(b),rd[b](a)):a.localeData().invalidDate()}function V(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(qd.lastIndex=0;d>=0&&qd.test(a);)a=a.replace(qd,c),qd.lastIndex=0,d-=1;return a}function W(a,b,c){Kd[a]=w(b)?b:function(a,d){return a&&c?c:b}}function X(a,b){return f(Kd,a)?Kd[a](b._strict,b._locale):new RegExp(Y(a))}function Y(a){return Z(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function Z(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function $(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),"number"==typeof b&&(d=function(a,c){c[b]=r(a)}),c=0;c<a.length;c++)Ld[a[c]]=d}function _(a,b){$(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function aa(a,b,c){null!=b&&f(Ld,a)&&Ld[a](b,c._a,c,a)}function ba(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function ca(a,b){return c(this._months)?this._months[a.month()]:this._months[Vd.test(b)?"format":"standalone"][a.month()]}function da(a,b){return c(this._monthsShort)?this._monthsShort[a.month()]:this._monthsShort[Vd.test(b)?"format":"standalone"][a.month()]}function ea(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],d=0;12>d;++d)f=h([2e3,d]),this._shortMonthsParse[d]=this.monthsShort(f,"").toLocaleLowerCase(),this._longMonthsParse[d]=this.months(f,"").toLocaleLowerCase();return c?"MMM"===b?(e=md.call(this._shortMonthsParse,g),-1!==e?e:null):(e=md.call(this._longMonthsParse,g),-1!==e?e:null):"MMM"===b?(e=md.call(this._shortMonthsParse,g),-1!==e?e:(e=md.call(this._longMonthsParse,g),-1!==e?e:null)):(e=md.call(this._longMonthsParse,g),-1!==e?e:(e=md.call(this._shortMonthsParse,g),-1!==e?e:null))}function fa(a,b,c){var d,e,f;if(this._monthsParseExact)return ea.call(this,a,b,c);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){if(e=h([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function ga(a,b){var c;if(!a.isValid())return a;if("string"==typeof b)if(/^\d+$/.test(b))b=r(b);else if(b=a.localeData().monthsParse(b),"number"!=typeof b)return a;return c=Math.min(a.date(),ba(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a}function ha(b){return null!=b?(ga(this,b),a.updateOffset(this,!0),this):N(this,"Month")}function ia(){return ba(this.year(),this.month())}function ja(a){return this._monthsParseExact?(f(this,"_monthsRegex")||la.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex}function ka(a){return this._monthsParseExact?(f(this,"_monthsRegex")||la.call(this),a?this._monthsStrictRegex:this._monthsRegex):this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex}function la(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;12>b;b++)c=h([2e3,b]),d.push(this.monthsShort(c,"")),e.push(this.months(c,"")),f.push(this.months(c,"")),f.push(this.monthsShort(c,""));for(d.sort(a),e.sort(a),f.sort(a),b=0;12>b;b++)d[b]=Z(d[b]),e[b]=Z(e[b]),f[b]=Z(f[b]);this._monthsRegex=new RegExp("^("+f.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+e.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+d.join("|")+")","i")}function ma(a){var b,c=a._a;return c&&-2===j(a).overflow&&(b=c[Nd]<0||c[Nd]>11?Nd:c[Od]<1||c[Od]>ba(c[Md],c[Nd])?Od:c[Pd]<0||c[Pd]>24||24===c[Pd]&&(0!==c[Qd]||0!==c[Rd]||0!==c[Sd])?Pd:c[Qd]<0||c[Qd]>59?Qd:c[Rd]<0||c[Rd]>59?Rd:c[Sd]<0||c[Sd]>999?Sd:-1,j(a)._overflowDayOfYear&&(Md>b||b>Od)&&(b=Od),j(a)._overflowWeeks&&-1===b&&(b=Td),j(a)._overflowWeekday&&-1===b&&(b=Ud),j(a).overflow=b),a}function na(a){var b,c,d,e,f,g,h=a._i,i=$d.exec(h)||_d.exec(h);if(i){for(j(a).iso=!0,b=0,c=be.length;c>b;b++)if(be[b][1].exec(i[1])){e=be[b][0],d=be[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=ce.length;c>b;b++)if(ce[b][1].exec(i[3])){f=(i[2]||" ")+ce[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!ae.exec(i[4]))return void(a._isValid=!1);g="Z"}a._f=e+(f||"")+(g||""),Ca(a)}else a._isValid=!1}function oa(b){var c=de.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(na(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}function pa(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 100>a&&a>=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function qa(a){var b=new Date(Date.UTC.apply(null,arguments));return 100>a&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function ra(a){return sa(a)?366:365}function sa(a){return a%4===0&&a%100!==0||a%400===0}function ta(){return sa(this.year())}function ua(a,b,c){var d=7+b-c,e=(7+qa(a,0,d).getUTCDay()-b)%7;return-e+d-1}function va(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=ua(a,d,e),j=1+7*(b-1)+h+i;return 0>=j?(f=a-1,g=ra(f)+j):j>ra(a)?(f=a+1,g=j-ra(a)):(f=a,g=j),{year:f,dayOfYear:g}}function wa(a,b,c){var d,e,f=ua(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return 1>g?(e=a.year()-1,d=g+xa(e,b,c)):g>xa(a.year(),b,c)?(d=g-xa(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function xa(a,b,c){var d=ua(a,b,c),e=ua(a+1,b,c);return(ra(a)-d+e)/7}function ya(a,b,c){return null!=a?a:null!=b?b:c}function za(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}function Aa(a){var b,c,d,e,f=[];if(!a._d){for(d=za(a),a._w&&null==a._a[Od]&&null==a._a[Nd]&&Ba(a),a._dayOfYear&&(e=ya(a._a[Md],d[Md]),a._dayOfYear>ra(e)&&(j(a)._overflowDayOfYear=!0),c=qa(e,0,a._dayOfYear),a._a[Nd]=c.getUTCMonth(),a._a[Od]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[Pd]&&0===a._a[Qd]&&0===a._a[Rd]&&0===a._a[Sd]&&(a._nextDay=!0,a._a[Pd]=0),a._d=(a._useUTC?qa:pa).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[Pd]=24)}}function Ba(a){var b,c,d,e,f,g,h,i;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=ya(b.GG,a._a[Md],wa(Ka(),1,4).year),d=ya(b.W,1),e=ya(b.E,1),(1>e||e>7)&&(i=!0)):(f=a._locale._week.dow,g=a._locale._week.doy,c=ya(b.gg,a._a[Md],wa(Ka(),f,g).year),d=ya(b.w,1),null!=b.d?(e=b.d,(0>e||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f),1>d||d>xa(c,f,g)?j(a)._overflowWeeks=!0:null!=i?j(a)._overflowWeekday=!0:(h=va(c,d,e,f,g),a._a[Md]=h.year,a._dayOfYear=h.dayOfYear)}function Ca(b){if(b._f===a.ISO_8601)return void na(b);b._a=[],j(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,k=0;for(e=V(b._f,b._locale).match(pd)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(X(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&j(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),k+=d.length),sd[f]?(d?j(b).empty=!1:j(b).unusedTokens.push(f),aa(f,d,b)):b._strict&&!d&&j(b).unusedTokens.push(f);j(b).charsLeftOver=i-k,h.length>0&&j(b).unusedInput.push(h),j(b).bigHour===!0&&b._a[Pd]<=12&&b._a[Pd]>0&&(j(b).bigHour=void 0),j(b).parsedDateParts=b._a.slice(0),j(b).meridiem=b._meridiem,b._a[Pd]=Da(b._locale,b._a[Pd],b._meridiem),Aa(b),ma(b)}function Da(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b}function Ea(a){var b,c,d,e,f;if(0===a._f.length)return j(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;e<a._f.length;e++)f=0,b=n({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],Ca(b),k(b)&&(f+=j(b).charsLeftOver,f+=10*j(b).unusedTokens.length,j(b).score=f,(null==d||d>f)&&(d=f,c=b));g(a,c||b)}function Fa(a){if(!a._d){var b=L(a._i);a._a=e([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),Aa(a)}}function Ga(a){var b=new o(ma(Ha(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function Ha(a){var b=a._i,e=a._f;return a._locale=a._locale||H(a._l),null===b||void 0===e&&""===b?l({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),p(b)?new o(ma(b)):(c(e)?Ea(a):e?Ca(a):d(b)?a._d=b:Ia(a),k(a)||(a._d=null),a))}function Ia(b){var f=b._i;void 0===f?b._d=new Date(a.now()):d(f)?b._d=new Date(f.valueOf()):"string"==typeof f?oa(b):c(f)?(b._a=e(f.slice(0),function(a){return parseInt(a,10)}),Aa(b)):"object"==typeof f?Fa(b):"number"==typeof f?b._d=new Date(f):a.createFromInputFallback(b)}function Ja(a,b,c,d,e){var f={};return"boolean"==typeof c&&(d=c,c=void 0),f._isAMomentObject=!0,f._useUTC=f._isUTC=e,f._l=c,f._i=a,f._f=b,f._strict=d,Ga(f)}function Ka(a,b,c,d){return Ja(a,b,c,d,!1)}function La(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return Ka();for(d=b[0],e=1;e<b.length;++e)(!b[e].isValid()||b[e][a](d))&&(d=b[e]);return d}function Ma(){var a=[].slice.call(arguments,0);return La("isBefore",a)}function Na(){var a=[].slice.call(arguments,0);return La("isAfter",a)}function Oa(a){var b=L(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+1e3*h*60*60,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=H(),this._bubble()}function Pa(a){return a instanceof Oa}function Qa(a,b){R(a,0,0,function(){var a=this.utcOffset(),c="+";return 0>a&&(a=-a,c="-"),c+Q(~~(a/60),2)+b+Q(~~a%60,2)})}function Ra(a,b){var c=(b||"").match(a)||[],d=c[c.length-1]||[],e=(d+"").match(ie)||["-",0,0],f=+(60*e[1])+r(e[2]);return"+"===e[0]?f:-f}function Sa(b,c){var e,f;return c._isUTC?(e=c.clone(),f=(p(b)||d(b)?b.valueOf():Ka(b).valueOf())-e.valueOf(),e._d.setTime(e._d.valueOf()+f),a.updateOffset(e,!1),e):Ka(b).local()}function Ta(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Ua(b,c){var d,e=this._offset||0;return this.isValid()?null!=b?("string"==typeof b?b=Ra(Hd,b):Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Ta(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?jb(this,db(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Ta(this):null!=b?this:NaN}function Va(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Wa(a){return this.utcOffset(0,a)}function Xa(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Ta(this),"m")),this}function Ya(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Ra(Gd,this._i)),this}function Za(a){return this.isValid()?(a=a?Ka(a).utcOffset():0,(this.utcOffset()-a)%60===0):!1}function $a(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function _a(){if(!m(this._isDSTShifted))return this._isDSTShifted;var a={};if(n(a,this),a=Ha(a),a._a){var b=a._isUTC?h(a._a):Ka(a._a);this._isDSTShifted=this.isValid()&&s(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function ab(){return this.isValid()?!this._isUTC:!1}function bb(){return this.isValid()?this._isUTC:!1}function cb(){return this.isValid()?this._isUTC&&0===this._offset:!1}function db(a,b){var c,d,e,g=a,h=null;return Pa(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=je.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:r(h[Od])*c,h:r(h[Pd])*c,m:r(h[Qd])*c,s:r(h[Rd])*c,ms:r(h[Sd])*c}):(h=ke.exec(a))?(c="-"===h[1]?-1:1,g={y:eb(h[2],c),M:eb(h[3],c),w:eb(h[4],c),d:eb(h[5],c),h:eb(h[6],c),m:eb(h[7],c),s:eb(h[8],c)}):null==g?g={}:"object"==typeof g&&("from"in g||"to"in g)&&(e=gb(Ka(g.from),Ka(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new Oa(g),Pa(a)&&f(a,"_locale")&&(d._locale=a._locale),d}function eb(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function fb(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function gb(a,b){var c;return a.isValid()&&b.isValid()?(b=Sa(b,a),a.isBefore(b)?c=fb(a,b):(c=fb(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function hb(a){return 0>a?-1*Math.round(-1*a):Math.round(a)}function ib(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(v(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=db(c,d),jb(this,e,a),this}}function jb(b,c,d,e){var f=c._milliseconds,g=hb(c._days),h=hb(c._months);b.isValid()&&(e=null==e?!0:e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&O(b,"Date",N(b,"Date")+g*d),h&&ga(b,N(b,"Month")+h*d),e&&a.updateOffset(b,g||h))}function kb(a,b){var c=a||Ka(),d=Sa(c,this).startOf("day"),e=this.diff(d,"days",!0),f=-6>e?"sameElse":-1>e?"lastWeek":0>e?"lastDay":1>e?"sameDay":2>e?"nextDay":7>e?"nextWeek":"sameElse",g=b&&(w(b[f])?b[f]():b[f]);return this.format(g||this.localeData().calendar(f,this,Ka(c)))}function lb(){return new o(this)}function mb(a,b){var c=p(a)?a:Ka(a);return this.isValid()&&c.isValid()?(b=K(m(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()<this.clone().startOf(b).valueOf()):!1}function nb(a,b){var c=p(a)?a:Ka(a);return this.isValid()&&c.isValid()?(b=K(m(b)?"millisecond":b),"millisecond"===b?this.valueOf()<c.valueOf():this.clone().endOf(b).valueOf()<c.valueOf()):!1}function ob(a,b,c,d){return d=d||"()",("("===d[0]?this.isAfter(a,c):!this.isBefore(a,c))&&(")"===d[1]?this.isBefore(b,c):!this.isAfter(b,c))}function pb(a,b){var c,d=p(a)?a:Ka(a);return this.isValid()&&d.isValid()?(b=K(b||"millisecond"),"millisecond"===b?this.valueOf()===d.valueOf():(c=d.valueOf(),this.clone().startOf(b).valueOf()<=c&&c<=this.clone().endOf(b).valueOf())):!1}function qb(a,b){return this.isSame(a,b)||this.isAfter(a,b)}function rb(a,b){return this.isSame(a,b)||this.isBefore(a,b)}function sb(a,b,c){var d,e,f,g;return this.isValid()?(d=Sa(a,this),d.isValid()?(e=6e4*(d.utcOffset()-this.utcOffset()),b=K(b),"year"===b||"month"===b||"quarter"===b?(g=tb(this,d),"quarter"===b?g/=3:"year"===b&&(g/=12)):(f=this-d,g="second"===b?f/1e3:"minute"===b?f/6e4:"hour"===b?f/36e5:"day"===b?(f-e)/864e5:"week"===b?(f-e)/6048e5:f),c?g:q(g)):NaN):NaN}function tb(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,"months");return 0>b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)||0}function ub(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function vb(){var a=this.clone().utc();return 0<a.year()&&a.year()<=9999?w(Date.prototype.toISOString)?this.toDate().toISOString():U(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):U(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function wb(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=U(this,b);return this.localeData().postformat(c)}function xb(a,b){return this.isValid()&&(p(a)&&a.isValid()||Ka(a).isValid())?db({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function yb(a){return this.from(Ka(),a)}function zb(a,b){return this.isValid()&&(p(a)&&a.isValid()||Ka(a).isValid())?db({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function Ab(a){return this.to(Ka(),a)}function Bb(a){var b;return void 0===a?this._locale._abbr:(b=H(a),null!=b&&(this._locale=b),this)}function Cb(){return this._locale}function Db(a){switch(a=K(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function Eb(a){return a=K(a),void 0===a||"millisecond"===a?this:("date"===a&&(a="day"),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms"))}function Fb(){return this._d.valueOf()-6e4*(this._offset||0)}function Gb(){return Math.floor(this.valueOf()/1e3)}function Hb(){return this._offset?new Date(this.valueOf()):this._d}function Ib(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function Jb(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a.milliseconds()}}function Kb(){return this.isValid()?this.toISOString():null}function Lb(){return k(this)}function Mb(){return g({},j(this))}function Nb(){return j(this).overflow}function Ob(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Pb(a,b){R(0,[a,a.length],0,b)}function Qb(a){return Ub.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Rb(a){return Ub.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Sb(){return xa(this.year(),1,4)}function Tb(){var a=this.localeData()._week;return xa(this.year(),a.dow,a.doy)}function Ub(a,b,c,d,e){var f;return null==a?wa(this,d,e).year:(f=xa(a,d,e),b>f&&(b=f),Vb.call(this,a,b,c,d,e))}function Vb(a,b,c,d,e){var f=va(a,b,c,d,e),g=qa(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Wb(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Xb(a){return wa(a,this._week.dow,this._week.doy).week}function Yb(){return this._week.dow}function Zb(){return this._week.doy}function $b(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function _b(a){var b=wa(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function ac(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function bc(a,b){return c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]}function cc(a){return this._weekdaysShort[a.day()]}function dc(a){return this._weekdaysMin[a.day()]}function ec(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;7>d;++d)f=h([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,"").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,"").toLocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,"").toLocaleLowerCase();return c?"dddd"===b?(e=md.call(this._weekdaysParse,g),-1!==e?e:null):"ddd"===b?(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:null):(e=md.call(this._minWeekdaysParse,g),-1!==e?e:null):"dddd"===b?(e=md.call(this._weekdaysParse,g),-1!==e?e:(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:(e=md.call(this._minWeekdaysParse,g),-1!==e?e:null))):"ddd"===b?(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:(e=md.call(this._weekdaysParse,g),-1!==e?e:(e=md.call(this._minWeekdaysParse,g),-1!==e?e:null))):(e=md.call(this._minWeekdaysParse,g),-1!==e?e:(e=md.call(this._weekdaysParse,g),-1!==e?e:(e=md.call(this._shortWeekdaysParse,g),-1!==e?e:null)))}function fc(a,b,c){var d,e,f;if(this._weekdaysParseExact)return ec.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;7>d;d++){if(e=h([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i")),c&&"dddd"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&"ddd"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&"dd"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function gc(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=ac(a,this.localeData()),this.add(a-b,"d")):b}function hc(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function ic(a){return this.isValid()?null==a?this.day()||7:this.day(this.day()%7?a:a-7):null!=a?this:NaN}function jc(a){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||mc.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex}function kc(a){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||mc.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}function lc(a){return this._weekdaysParseExact?(f(this,"_weekdaysRegex")||mc.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}function mc(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],i=[],j=[],k=[];for(b=0;7>b;b++)c=h([2e3,1]).day(b),d=this.weekdaysMin(c,""),e=this.weekdaysShort(c,""),f=this.weekdays(c,""),g.push(d),i.push(e),j.push(f),k.push(d),k.push(e),k.push(f);for(g.sort(a),i.sort(a),j.sort(a),k.sort(a),b=0;7>b;b++)i[b]=Z(i[b]),j[b]=Z(j[b]),k[b]=Z(k[b]);this._weekdaysRegex=new RegExp("^("+k.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+j.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+g.join("|")+")","i")}function nc(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function oc(){return this.hours()%12||12}function pc(){return this.hours()||24}function qc(a,b){R(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function rc(a,b){return b._meridiemParse}function sc(a){return"p"===(a+"").toLowerCase().charAt(0)}function tc(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function uc(a,b){b[Sd]=r(1e3*("0."+a))}function vc(){return this._isUTC?"UTC":""}function wc(){return this._isUTC?"Coordinated Universal Time":""}function xc(a){return Ka(1e3*a)}function yc(){return Ka.apply(null,arguments).parseZone()}function zc(a,b,c){var d=this._calendar[a];return w(d)?d.call(b,c):d}function Ac(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function Bc(){return this._invalidDate}function Cc(a){return this._ordinal.replace("%d",a)}function Dc(a){return a}function Ec(a,b,c,d){var e=this._relativeTime[c];return w(e)?e(a,b,c,d):e.replace(/%d/i,a)}function Fc(a,b){var c=this._relativeTime[a>0?"future":"past"];return w(c)?c(b):c.replace(/%s/i,b)}function Gc(a,b,c,d){var e=H(),f=h().set(d,b);return e[c](f,a)}function Hc(a,b,c){if("number"==typeof a&&(b=a,a=void 0),a=a||"",null!=b)return Gc(a,b,c,"month");var d,e=[];for(d=0;12>d;d++)e[d]=Gc(a,d,c,"month");return e}function Ic(a,b,c,d){"boolean"==typeof a?("number"==typeof b&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,"number"==typeof b&&(c=b,b=void 0),b=b||"");var e=H(),f=a?e._week.dow:0;if(null!=c)return Gc(b,(c+f)%7,d,"day");var g,h=[];for(g=0;7>g;g++)h[g]=Gc(b,(g+f)%7,d,"day");return h}function Jc(a,b){return Hc(a,b,"months")}function Kc(a,b){return Hc(a,b,"monthsShort")}function Lc(a,b,c){return Ic(a,b,c,"weekdays")}function Mc(a,b,c){return Ic(a,b,c,"weekdaysShort")}function Nc(a,b,c){return Ic(a,b,c,"weekdaysMin")}function Oc(){var a=this._data;return this._milliseconds=Le(this._milliseconds),this._days=Le(this._days),this._months=Le(this._months),a.milliseconds=Le(a.milliseconds),a.seconds=Le(a.seconds),a.minutes=Le(a.minutes),a.hours=Le(a.hours),a.months=Le(a.months),a.years=Le(a.years),this}function Pc(a,b,c,d){var e=db(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function Qc(a,b){return Pc(this,a,b,1)}function Rc(a,b){return Pc(this,a,b,-1)}function Sc(a){return 0>a?Math.floor(a):Math.ceil(a)}function Tc(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*Sc(Vc(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=q(f/1e3),i.seconds=a%60,b=q(a/60),i.minutes=b%60,c=q(b/60),i.hours=c%24,g+=q(c/24),e=q(Uc(g)),h+=e,g-=Sc(Vc(e)),d=q(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function Uc(a){return 4800*a/146097}function Vc(a){return 146097*a/4800}function Wc(a){var b,c,d=this._milliseconds;if(a=K(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+Uc(b),"month"===a?c:c/12;switch(b=this._days+Math.round(Vc(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function Xc(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*r(this._months/12)}function Yc(a){return function(){return this.as(a)}}function Zc(a){
7
+ return a=K(a),this[a+"s"]()}function $c(a){return function(){return this._data[a]}}function _c(){return q(this.days()/7)}function ad(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function bd(a,b,c){var d=db(a).abs(),e=_e(d.as("s")),f=_e(d.as("m")),g=_e(d.as("h")),h=_e(d.as("d")),i=_e(d.as("M")),j=_e(d.as("y")),k=e<af.s&&["s",e]||1>=f&&["m"]||f<af.m&&["mm",f]||1>=g&&["h"]||g<af.h&&["hh",g]||1>=h&&["d"]||h<af.d&&["dd",h]||1>=i&&["M"]||i<af.M&&["MM",i]||1>=j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,ad.apply(null,k)}function cd(a,b){return void 0===af[a]?!1:void 0===b?af[a]:(af[a]=b,!0)}function dd(a){var b=this.localeData(),c=bd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function ed(){var a,b,c,d=bf(this._milliseconds)/1e3,e=bf(this._days),f=bf(this._months);a=q(d/60),b=q(a/60),d%=60,a%=60,c=q(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"}var fd,gd;gd=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;c>d;d++)if(d in b&&a.call(this,b[d],d,b))return!0;return!1};var hd=a.momentProperties=[],id=!1,jd={};a.suppressDeprecationWarnings=!1,a.deprecationHandler=null;var kd;kd=Object.keys?Object.keys:function(a){var b,c=[];for(b in a)f(a,b)&&c.push(b);return c};var ld,md,nd={},od={},pd=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,qd=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,rd={},sd={},td=/\d/,ud=/\d\d/,vd=/\d{3}/,wd=/\d{4}/,xd=/[+-]?\d{6}/,yd=/\d\d?/,zd=/\d\d\d\d?/,Ad=/\d\d\d\d\d\d?/,Bd=/\d{1,3}/,Cd=/\d{1,4}/,Dd=/[+-]?\d{1,6}/,Ed=/\d+/,Fd=/[+-]?\d+/,Gd=/Z|[+-]\d\d:?\d\d/gi,Hd=/Z|[+-]\d\d(?::?\d\d)?/gi,Id=/[+-]?\d+(\.\d{1,3})?/,Jd=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Kd={},Ld={},Md=0,Nd=1,Od=2,Pd=3,Qd=4,Rd=5,Sd=6,Td=7,Ud=8;md=Array.prototype.indexOf?Array.prototype.indexOf:function(a){var b;for(b=0;b<this.length;++b)if(this[b]===a)return b;return-1},R("M",["MM",2],"Mo",function(){return this.month()+1}),R("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),R("MMMM",0,0,function(a){return this.localeData().months(this,a)}),J("month","M"),W("M",yd),W("MM",yd,ud),W("MMM",function(a,b){return b.monthsShortRegex(a)}),W("MMMM",function(a,b){return b.monthsRegex(a)}),$(["M","MM"],function(a,b){b[Nd]=r(a)-1}),$(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[Nd]=e:j(c).invalidMonth=a});var Vd=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/,Wd="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Xd="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Yd=Jd,Zd=Jd,$d=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,_d=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,ae=/Z|[+-]\d\d(?::?\d\d)?/,be=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],ce=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],de=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=u("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),R("Y",0,0,function(){var a=this.year();return 9999>=a?""+a:"+"+a}),R(0,["YY",2],0,function(){return this.year()%100}),R(0,["YYYY",4],0,"year"),R(0,["YYYYY",5],0,"year"),R(0,["YYYYYY",6,!0],0,"year"),J("year","y"),W("Y",Fd),W("YY",yd,ud),W("YYYY",Cd,wd),W("YYYYY",Dd,xd),W("YYYYYY",Dd,xd),$(["YYYYY","YYYYYY"],Md),$("YYYY",function(b,c){c[Md]=2===b.length?a.parseTwoDigitYear(b):r(b)}),$("YY",function(b,c){c[Md]=a.parseTwoDigitYear(b)}),$("Y",function(a,b){b[Md]=parseInt(a,10)}),a.parseTwoDigitYear=function(a){return r(a)+(r(a)>68?1900:2e3)};var ee=M("FullYear",!0);a.ISO_8601=function(){};var fe=u("moment().min is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var a=Ka.apply(null,arguments);return this.isValid()&&a.isValid()?this>a?this:a:l()}),ge=u("moment().max is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var a=Ka.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:l()}),he=function(){return Date.now?Date.now():+new Date};Qa("Z",":"),Qa("ZZ",""),W("Z",Hd),W("ZZ",Hd),$(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Ra(Hd,a)});var ie=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var je=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/,ke=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;db.fn=Oa.prototype;var le=ib(1,"add"),me=ib(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var ne=u("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});R(0,["gg",2],0,function(){return this.weekYear()%100}),R(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Pb("gggg","weekYear"),Pb("ggggg","weekYear"),Pb("GGGG","isoWeekYear"),Pb("GGGGG","isoWeekYear"),J("weekYear","gg"),J("isoWeekYear","GG"),W("G",Fd),W("g",Fd),W("GG",yd,ud),W("gg",yd,ud),W("GGGG",Cd,wd),W("gggg",Cd,wd),W("GGGGG",Dd,xd),W("ggggg",Dd,xd),_(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=r(a)}),_(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),R("Q",0,"Qo","quarter"),J("quarter","Q"),W("Q",td),$("Q",function(a,b){b[Nd]=3*(r(a)-1)}),R("w",["ww",2],"wo","week"),R("W",["WW",2],"Wo","isoWeek"),J("week","w"),J("isoWeek","W"),W("w",yd),W("ww",yd,ud),W("W",yd),W("WW",yd,ud),_(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=r(a)});var oe={dow:0,doy:6};R("D",["DD",2],"Do","date"),J("date","D"),W("D",yd),W("DD",yd,ud),W("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),$(["D","DD"],Od),$("Do",function(a,b){b[Od]=r(a.match(yd)[0],10)});var pe=M("Date",!0);R("d",0,"do","day"),R("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),R("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),R("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),R("e",0,0,"weekday"),R("E",0,0,"isoWeekday"),J("day","d"),J("weekday","e"),J("isoWeekday","E"),W("d",yd),W("e",yd),W("E",yd),W("dd",function(a,b){return b.weekdaysMinRegex(a)}),W("ddd",function(a,b){return b.weekdaysShortRegex(a)}),W("dddd",function(a,b){return b.weekdaysRegex(a)}),_(["dd","ddd","dddd"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:j(c).invalidWeekday=a}),_(["d","e","E"],function(a,b,c,d){b[d]=r(a)});var qe="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),re="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),se="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),te=Jd,ue=Jd,ve=Jd;R("DDD",["DDDD",3],"DDDo","dayOfYear"),J("dayOfYear","DDD"),W("DDD",Bd),W("DDDD",vd),$(["DDD","DDDD"],function(a,b,c){c._dayOfYear=r(a)}),R("H",["HH",2],0,"hour"),R("h",["hh",2],0,oc),R("k",["kk",2],0,pc),R("hmm",0,0,function(){return""+oc.apply(this)+Q(this.minutes(),2)}),R("hmmss",0,0,function(){return""+oc.apply(this)+Q(this.minutes(),2)+Q(this.seconds(),2)}),R("Hmm",0,0,function(){return""+this.hours()+Q(this.minutes(),2)}),R("Hmmss",0,0,function(){return""+this.hours()+Q(this.minutes(),2)+Q(this.seconds(),2)}),qc("a",!0),qc("A",!1),J("hour","h"),W("a",rc),W("A",rc),W("H",yd),W("h",yd),W("HH",yd,ud),W("hh",yd,ud),W("hmm",zd),W("hmmss",Ad),W("Hmm",zd),W("Hmmss",Ad),$(["H","HH"],Pd),$(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),$(["h","hh"],function(a,b,c){b[Pd]=r(a),j(c).bigHour=!0}),$("hmm",function(a,b,c){var d=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d)),j(c).bigHour=!0}),$("hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d,2)),b[Rd]=r(a.substr(e)),j(c).bigHour=!0}),$("Hmm",function(a,b,c){var d=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d))}),$("Hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[Pd]=r(a.substr(0,d)),b[Qd]=r(a.substr(d,2)),b[Rd]=r(a.substr(e))});var we=/[ap]\.?m?\.?/i,xe=M("Hours",!0);R("m",["mm",2],0,"minute"),J("minute","m"),W("m",yd),W("mm",yd,ud),$(["m","mm"],Qd);var ye=M("Minutes",!1);R("s",["ss",2],0,"second"),J("second","s"),W("s",yd),W("ss",yd,ud),$(["s","ss"],Rd);var ze=M("Seconds",!1);R("S",0,0,function(){return~~(this.millisecond()/100)}),R(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),R(0,["SSS",3],0,"millisecond"),R(0,["SSSS",4],0,function(){return 10*this.millisecond()}),R(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),R(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),R(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),R(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),R(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),J("millisecond","ms"),W("S",Bd,td),W("SS",Bd,ud),W("SSS",Bd,vd);var Ae;for(Ae="SSSS";Ae.length<=9;Ae+="S")W(Ae,Ed);for(Ae="S";Ae.length<=9;Ae+="S")$(Ae,uc);var Be=M("Milliseconds",!1);R("z",0,0,"zoneAbbr"),R("zz",0,0,"zoneName");var Ce=o.prototype;Ce.add=le,Ce.calendar=kb,Ce.clone=lb,Ce.diff=sb,Ce.endOf=Eb,Ce.format=wb,Ce.from=xb,Ce.fromNow=yb,Ce.to=zb,Ce.toNow=Ab,Ce.get=P,Ce.invalidAt=Nb,Ce.isAfter=mb,Ce.isBefore=nb,Ce.isBetween=ob,Ce.isSame=pb,Ce.isSameOrAfter=qb,Ce.isSameOrBefore=rb,Ce.isValid=Lb,Ce.lang=ne,Ce.locale=Bb,Ce.localeData=Cb,Ce.max=ge,Ce.min=fe,Ce.parsingFlags=Mb,Ce.set=P,Ce.startOf=Db,Ce.subtract=me,Ce.toArray=Ib,Ce.toObject=Jb,Ce.toDate=Hb,Ce.toISOString=vb,Ce.toJSON=Kb,Ce.toString=ub,Ce.unix=Gb,Ce.valueOf=Fb,Ce.creationData=Ob,Ce.year=ee,Ce.isLeapYear=ta,Ce.weekYear=Qb,Ce.isoWeekYear=Rb,Ce.quarter=Ce.quarters=Wb,Ce.month=ha,Ce.daysInMonth=ia,Ce.week=Ce.weeks=$b,Ce.isoWeek=Ce.isoWeeks=_b,Ce.weeksInYear=Tb,Ce.isoWeeksInYear=Sb,Ce.date=pe,Ce.day=Ce.days=gc,Ce.weekday=hc,Ce.isoWeekday=ic,Ce.dayOfYear=nc,Ce.hour=Ce.hours=xe,Ce.minute=Ce.minutes=ye,Ce.second=Ce.seconds=ze,Ce.millisecond=Ce.milliseconds=Be,Ce.utcOffset=Ua,Ce.utc=Wa,Ce.local=Xa,Ce.parseZone=Ya,Ce.hasAlignedHourOffset=Za,Ce.isDST=$a,Ce.isDSTShifted=_a,Ce.isLocal=ab,Ce.isUtcOffset=bb,Ce.isUtc=cb,Ce.isUTC=cb,Ce.zoneAbbr=vc,Ce.zoneName=wc,Ce.dates=u("dates accessor is deprecated. Use date instead.",pe),Ce.months=u("months accessor is deprecated. Use month instead",ha),Ce.years=u("years accessor is deprecated. Use year instead",ee),Ce.zone=u("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Va);var De=Ce,Ee={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Fe={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Ge="Invalid date",He="%d",Ie=/\d{1,2}/,Je={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Ke=A.prototype;Ke._calendar=Ee,Ke.calendar=zc,Ke._longDateFormat=Fe,Ke.longDateFormat=Ac,Ke._invalidDate=Ge,Ke.invalidDate=Bc,Ke._ordinal=He,Ke.ordinal=Cc,Ke._ordinalParse=Ie,Ke.preparse=Dc,Ke.postformat=Dc,Ke._relativeTime=Je,Ke.relativeTime=Ec,Ke.pastFuture=Fc,Ke.set=y,Ke.months=ca,Ke._months=Wd,Ke.monthsShort=da,Ke._monthsShort=Xd,Ke.monthsParse=fa,Ke._monthsRegex=Zd,Ke.monthsRegex=ka,Ke._monthsShortRegex=Yd,Ke.monthsShortRegex=ja,Ke.week=Xb,Ke._week=oe,Ke.firstDayOfYear=Zb,Ke.firstDayOfWeek=Yb,Ke.weekdays=bc,Ke._weekdays=qe,Ke.weekdaysMin=dc,Ke._weekdaysMin=se,Ke.weekdaysShort=cc,Ke._weekdaysShort=re,Ke.weekdaysParse=fc,Ke._weekdaysRegex=te,Ke.weekdaysRegex=jc,Ke._weekdaysShortRegex=ue,Ke.weekdaysShortRegex=kc,Ke._weekdaysMinRegex=ve,Ke.weekdaysMinRegex=lc,Ke.isPM=sc,Ke._meridiemParse=we,Ke.meridiem=tc,E("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===r(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=u("moment.lang is deprecated. Use moment.locale instead.",E),a.langData=u("moment.langData is deprecated. Use moment.localeData instead.",H);var Le=Math.abs,Me=Yc("ms"),Ne=Yc("s"),Oe=Yc("m"),Pe=Yc("h"),Qe=Yc("d"),Re=Yc("w"),Se=Yc("M"),Te=Yc("y"),Ue=$c("milliseconds"),Ve=$c("seconds"),We=$c("minutes"),Xe=$c("hours"),Ye=$c("days"),Ze=$c("months"),$e=$c("years"),_e=Math.round,af={s:45,m:45,h:22,d:26,M:11},bf=Math.abs,cf=Oa.prototype;cf.abs=Oc,cf.add=Qc,cf.subtract=Rc,cf.as=Wc,cf.asMilliseconds=Me,cf.asSeconds=Ne,cf.asMinutes=Oe,cf.asHours=Pe,cf.asDays=Qe,cf.asWeeks=Re,cf.asMonths=Se,cf.asYears=Te,cf.valueOf=Xc,cf._bubble=Tc,cf.get=Zc,cf.milliseconds=Ue,cf.seconds=Ve,cf.minutes=We,cf.hours=Xe,cf.days=Ye,cf.weeks=_c,cf.months=Ze,cf.years=$e,cf.humanize=dd,cf.toISOString=ed,cf.toString=ed,cf.toJSON=ed,cf.locale=Bb,cf.localeData=Cb,cf.toIsoString=u("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ed),cf.lang=ne,R("X",0,0,"unix"),R("x",0,0,"valueOf"),W("x",Fd),W("X",Id),$("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),$("x",function(a,b,c){c._d=new Date(r(a))}),a.version="2.13.0",b(Ka),a.fn=De,a.min=Ma,a.max=Na,a.now=he,a.utc=h,a.unix=xc,a.months=Jc,a.isDate=d,a.locale=E,a.invalid=l,a.duration=db,a.isMoment=p,a.weekdays=Lc,a.parseZone=yc,a.localeData=H,a.isDuration=Pa,a.monthsShort=Kc,a.weekdaysMin=Nc,a.defineLocale=F,a.updateLocale=G,a.locales=I,a.weekdaysShort=Mc,a.normalizeUnits=K,a.relativeTimeThreshold=cd,a.prototype=De;var df=a;return df});
@@ -0,0 +1,584 @@
1
+ /* Copyright (c) 2012 HyeonJe Jun (http://github.com/noraesae)
2
+ * Licensed under the MIT License
3
+ */
4
+ 'use strict';
5
+ (function (factory) {
6
+ if (typeof define === 'function' && define.amd) {
7
+ // AMD. Register as an anonymous module.
8
+ define(['jquery'], factory);
9
+ } else {
10
+ // Browser globals
11
+ factory(jQuery);
12
+ }
13
+ }(function ($) {
14
+
15
+ // The default settings for the plugin
16
+ var defaultSettings = {
17
+ wheelSpeed: 10,
18
+ wheelPropagation: false,
19
+ minScrollbarLength: null,
20
+ useBothWheelAxes: false,
21
+ useKeyboard: true,
22
+ suppressScrollX: false,
23
+ suppressScrollY: false,
24
+ scrollXMarginOffset: 0,
25
+ scrollYMarginOffset: 0
26
+ };
27
+
28
+ $.fn.perfectScrollbar = function (suppliedSettings, option) {
29
+
30
+ return this.each(function () {
31
+ // Use the default settings
32
+ var settings = $.extend(true, {}, defaultSettings),
33
+ $this = $(this);
34
+
35
+ if (typeof suppliedSettings === "object") {
36
+ // But over-ride any supplied
37
+ $.extend(true, settings, suppliedSettings);
38
+ } else {
39
+ // If no settings were supplied, then the first param must be the option
40
+ option = suppliedSettings;
41
+ }
42
+
43
+ // Catch options
44
+
45
+ if (option === 'update') {
46
+ if ($this.data('perfect-scrollbar-update')) {
47
+ $this.data('perfect-scrollbar-update')();
48
+ }
49
+ return $this;
50
+ }
51
+ else if (option === 'destroy') {
52
+ if ($this.data('perfect-scrollbar-destroy')) {
53
+ $this.data('perfect-scrollbar-destroy')();
54
+ }
55
+ return $this;
56
+ }
57
+
58
+ if ($this.data('perfect-scrollbar')) {
59
+ // if there's already perfect-scrollbar
60
+ return $this.data('perfect-scrollbar');
61
+ }
62
+
63
+
64
+ // Or generate new perfectScrollbar
65
+
66
+ // Set class to the container
67
+ $this.addClass('ps-container');
68
+
69
+ var $scrollbarXRail = $("<div class='ps-scrollbar-x-rail'></div>").appendTo($this),
70
+ $scrollbarYRail = $("<div class='ps-scrollbar-y-rail'></div>").appendTo($this),
71
+ $scrollbarX = $("<div class='ps-scrollbar-x'></div>").appendTo($scrollbarXRail),
72
+ $scrollbarY = $("<div class='ps-scrollbar-y'></div>").appendTo($scrollbarYRail),
73
+ scrollbarXActive,
74
+ scrollbarYActive,
75
+ containerWidth,
76
+ containerHeight,
77
+ contentWidth,
78
+ contentHeight,
79
+ scrollbarXWidth,
80
+ scrollbarXLeft,
81
+ scrollbarXBottom = parseInt($scrollbarXRail.css('bottom'), 10),
82
+ scrollbarYHeight,
83
+ scrollbarYTop,
84
+ scrollbarYRight = parseInt($scrollbarYRail.css('right'), 10);
85
+
86
+ var updateContentScrollTop = function () {
87
+ var scrollTop = parseInt(scrollbarYTop * (contentHeight - containerHeight) / (containerHeight - scrollbarYHeight), 10);
88
+ $this.scrollTop(scrollTop);
89
+ $scrollbarXRail.css({bottom: scrollbarXBottom - scrollTop});
90
+ };
91
+
92
+ var updateContentScrollLeft = function () {
93
+ var scrollLeft = parseInt(scrollbarXLeft * (contentWidth - containerWidth) / (containerWidth - scrollbarXWidth), 10);
94
+ $this.scrollLeft(scrollLeft);
95
+ $scrollbarYRail.css({right: scrollbarYRight - scrollLeft});
96
+ };
97
+
98
+ var getSettingsAdjustedThumbSize = function (thumbSize) {
99
+ if (settings.minScrollbarLength) {
100
+ thumbSize = Math.max(thumbSize, settings.minScrollbarLength);
101
+ }
102
+ return thumbSize;
103
+ };
104
+
105
+ var updateScrollbarCss = function () {
106
+ $scrollbarXRail.css({left: $this.scrollLeft(), bottom: scrollbarXBottom - $this.scrollTop(), width: containerWidth, display: settings.suppressScrollX ? "none": "inherit"});
107
+ $scrollbarYRail.css({top: $this.scrollTop(), right: scrollbarYRight - $this.scrollLeft(), height: containerHeight, display: settings.suppressScrollY ? "none": "inherit"});
108
+ $scrollbarX.css({left: scrollbarXLeft, width: scrollbarXWidth});
109
+ $scrollbarY.css({top: scrollbarYTop, height: scrollbarYHeight});
110
+ };
111
+
112
+ var updateBarSizeAndPosition = function () {
113
+ containerWidth = $this.width();
114
+ containerHeight = $this.height();
115
+ contentWidth = $this.prop('scrollWidth');
116
+ contentHeight = $this.prop('scrollHeight');
117
+
118
+ if (!settings.suppressScrollX && containerWidth + settings.scrollXMarginOffset < contentWidth) {
119
+ scrollbarXActive = true;
120
+ scrollbarXWidth = getSettingsAdjustedThumbSize(parseInt(containerWidth * containerWidth / contentWidth, 10));
121
+ scrollbarXLeft = parseInt($this.scrollLeft() * (containerWidth - scrollbarXWidth) / (contentWidth - containerWidth), 10);
122
+ }
123
+ else {
124
+ scrollbarXActive = false;
125
+ scrollbarXWidth = 0;
126
+ scrollbarXLeft = 0;
127
+ $this.scrollLeft(0);
128
+ }
129
+
130
+ if (!settings.suppressScrollY && containerHeight + settings.scrollYMarginOffset < contentHeight) {
131
+ scrollbarYActive = true;
132
+ scrollbarYHeight = getSettingsAdjustedThumbSize(parseInt(containerHeight * containerHeight / contentHeight, 10));
133
+ scrollbarYTop = parseInt($this.scrollTop() * (containerHeight - scrollbarYHeight) / (contentHeight - containerHeight), 10);
134
+ }
135
+ else {
136
+ scrollbarYActive = false;
137
+ scrollbarYHeight = 0;
138
+ scrollbarYTop = 0;
139
+ $this.scrollTop(0);
140
+ }
141
+
142
+ if (scrollbarYTop >= containerHeight - scrollbarYHeight) {
143
+ scrollbarYTop = containerHeight - scrollbarYHeight;
144
+ }
145
+ if (scrollbarXLeft >= containerWidth - scrollbarXWidth) {
146
+ scrollbarXLeft = containerWidth - scrollbarXWidth;
147
+ }
148
+
149
+ updateScrollbarCss();
150
+ };
151
+
152
+ var moveBarX = function (currentLeft, deltaX) {
153
+ var newLeft = currentLeft + deltaX,
154
+ maxLeft = containerWidth - scrollbarXWidth;
155
+
156
+ if (newLeft < 0) {
157
+ scrollbarXLeft = 0;
158
+ }
159
+ else if (newLeft > maxLeft) {
160
+ scrollbarXLeft = maxLeft;
161
+ }
162
+ else {
163
+ scrollbarXLeft = newLeft;
164
+ }
165
+ $scrollbarXRail.css({left: $this.scrollLeft()});
166
+ $scrollbarX.css({left: scrollbarXLeft});
167
+ };
168
+
169
+ var moveBarY = function (currentTop, deltaY) {
170
+ var newTop = currentTop + deltaY,
171
+ maxTop = containerHeight - scrollbarYHeight;
172
+
173
+ if (newTop < 0) {
174
+ scrollbarYTop = 0;
175
+ }
176
+ else if (newTop > maxTop) {
177
+ scrollbarYTop = maxTop;
178
+ }
179
+ else {
180
+ scrollbarYTop = newTop;
181
+ }
182
+ $scrollbarYRail.css({top: $this.scrollTop()});
183
+ $scrollbarY.css({top: scrollbarYTop});
184
+ };
185
+
186
+ var bindMouseScrollXHandler = function () {
187
+ var currentLeft,
188
+ currentPageX;
189
+
190
+ $scrollbarX.bind('mousedown.perfect-scrollbar', function (e) {
191
+ currentPageX = e.pageX;
192
+ currentLeft = $scrollbarX.position().left;
193
+ $scrollbarXRail.addClass('in-scrolling');
194
+ e.stopPropagation();
195
+ e.preventDefault();
196
+ });
197
+
198
+ $(document).bind('mousemove.perfect-scrollbar', function (e) {
199
+ if ($scrollbarXRail.hasClass('in-scrolling')) {
200
+ updateContentScrollLeft();
201
+ moveBarX(currentLeft, e.pageX - currentPageX);
202
+ e.stopPropagation();
203
+ e.preventDefault();
204
+ }
205
+ });
206
+
207
+ $(document).bind('mouseup.perfect-scrollbar', function (e) {
208
+ if ($scrollbarXRail.hasClass('in-scrolling')) {
209
+ $scrollbarXRail.removeClass('in-scrolling');
210
+ }
211
+ });
212
+
213
+ currentLeft =
214
+ currentPageX = null;
215
+ };
216
+
217
+ var bindMouseScrollYHandler = function () {
218
+ var currentTop,
219
+ currentPageY;
220
+
221
+ $scrollbarY.bind('mousedown.perfect-scrollbar', function (e) {
222
+ currentPageY = e.pageY;
223
+ currentTop = $scrollbarY.position().top;
224
+ $scrollbarYRail.addClass('in-scrolling');
225
+ e.stopPropagation();
226
+ e.preventDefault();
227
+ });
228
+
229
+ $(document).bind('mousemove.perfect-scrollbar', function (e) {
230
+ if ($scrollbarYRail.hasClass('in-scrolling')) {
231
+ updateContentScrollTop();
232
+ moveBarY(currentTop, e.pageY - currentPageY);
233
+ e.stopPropagation();
234
+ e.preventDefault();
235
+ }
236
+ });
237
+
238
+ $(document).bind('mouseup.perfect-scrollbar', function (e) {
239
+ if ($scrollbarYRail.hasClass('in-scrolling')) {
240
+ $scrollbarYRail.removeClass('in-scrolling');
241
+ }
242
+ });
243
+
244
+ currentTop =
245
+ currentPageY = null;
246
+ };
247
+
248
+ // check if the default scrolling should be prevented.
249
+ var shouldPreventDefault = function (deltaX, deltaY) {
250
+ var scrollTop = $this.scrollTop();
251
+ if (deltaX === 0) {
252
+ if (!scrollbarYActive) {
253
+ return false;
254
+ }
255
+ if ((scrollTop === 0 && deltaY > 0) || (scrollTop >= contentHeight - containerHeight && deltaY < 0)) {
256
+ return !settings.wheelPropagation;
257
+ }
258
+ }
259
+
260
+ var scrollLeft = $this.scrollLeft();
261
+ if (deltaY === 0) {
262
+ if (!scrollbarXActive) {
263
+ return false;
264
+ }
265
+ if ((scrollLeft === 0 && deltaX < 0) || (scrollLeft >= contentWidth - containerWidth && deltaX > 0)) {
266
+ return !settings.wheelPropagation;
267
+ }
268
+ }
269
+ return true;
270
+ };
271
+
272
+ // bind handlers
273
+ var bindMouseWheelHandler = function () {
274
+ var shouldPrevent = false;
275
+ $this.bind('mousewheel.perfect-scrollbar', function (e, delta, deltaX, deltaY) {
276
+ if (!settings.useBothWheelAxes) {
277
+ // deltaX will only be used for horizontal scrolling and deltaY will
278
+ // only be used for vertical scrolling - this is the default
279
+ $this.scrollTop($this.scrollTop() - (deltaY * settings.wheelSpeed));
280
+ $this.scrollLeft($this.scrollLeft() + (deltaX * settings.wheelSpeed));
281
+ } else if (scrollbarYActive && !scrollbarXActive) {
282
+ // only vertical scrollbar is active and useBothWheelAxes option is
283
+ // active, so let's scroll vertical bar using both mouse wheel axes
284
+ if (deltaY) {
285
+ $this.scrollTop($this.scrollTop() - (deltaY * settings.wheelSpeed));
286
+ } else {
287
+ $this.scrollTop($this.scrollTop() + (deltaX * settings.wheelSpeed));
288
+ }
289
+ } else if (scrollbarXActive && !scrollbarYActive) {
290
+ // useBothWheelAxes and only horizontal bar is active, so use both
291
+ // wheel axes for horizontal bar
292
+ if (deltaX) {
293
+ $this.scrollLeft($this.scrollLeft() + (deltaX * settings.wheelSpeed));
294
+ } else {
295
+ $this.scrollLeft($this.scrollLeft() - (deltaY * settings.wheelSpeed));
296
+ }
297
+ }
298
+
299
+ // update bar position
300
+ updateBarSizeAndPosition();
301
+
302
+ shouldPrevent = shouldPreventDefault(deltaX, deltaY);
303
+ if (shouldPrevent) {
304
+ e.preventDefault();
305
+ }
306
+ });
307
+
308
+ // fix Firefox scroll problem
309
+ $this.bind('MozMousePixelScroll.perfect-scrollbar', function (e) {
310
+ if (shouldPrevent) {
311
+ e.preventDefault();
312
+ }
313
+ });
314
+ };
315
+
316
+ var bindKeyboardHandler = function () {
317
+ var hovered = false;
318
+ $this.bind('mouseenter.perfect-scrollbar', function (e) {
319
+ hovered = true;
320
+ });
321
+ $this.bind('mouseleave.perfect-scrollbar', function (e) {
322
+ hovered = false;
323
+ });
324
+
325
+ var shouldPrevent = false;
326
+ $(document).bind('keydown.perfect-scrollbar', function (e) {
327
+ if (!hovered) {
328
+ return;
329
+ }
330
+
331
+ var deltaX = 0,
332
+ deltaY = 0;
333
+
334
+ switch (e.which) {
335
+ case 37: // left
336
+ deltaX = -3;
337
+ break;
338
+ case 38: // up
339
+ deltaY = 3;
340
+ break;
341
+ case 39: // right
342
+ deltaX = 3;
343
+ break;
344
+ case 40: // down
345
+ deltaY = -3;
346
+ break;
347
+ default:
348
+ return;
349
+ }
350
+
351
+ $this.scrollTop($this.scrollTop() - (deltaY * settings.wheelSpeed));
352
+ $this.scrollLeft($this.scrollLeft() + (deltaX * settings.wheelSpeed));
353
+
354
+ // update bar position
355
+ updateBarSizeAndPosition();
356
+
357
+ shouldPrevent = shouldPreventDefault(deltaX, deltaY);
358
+ if (shouldPrevent) {
359
+ e.preventDefault();
360
+ }
361
+ });
362
+ };
363
+
364
+ var bindRailClickHandler = function () {
365
+ var stopPropagation = function (e) { e.stopPropagation(); };
366
+
367
+ $scrollbarY.bind('click.perfect-scrollbar', stopPropagation);
368
+ $scrollbarYRail.bind('click.perfect-scrollbar', function (e) {
369
+ var halfOfScrollbarLength = parseInt(scrollbarYHeight / 2, 10),
370
+ positionTop = e.pageY - $scrollbarYRail.offset().top - halfOfScrollbarLength,
371
+ maxPositionTop = containerHeight - scrollbarYHeight,
372
+ positionRatio = positionTop / maxPositionTop;
373
+
374
+ if (positionRatio < 0) {
375
+ positionRatio = 0;
376
+ } else if (positionRatio > 1) {
377
+ positionRatio = 1;
378
+ }
379
+
380
+ $this.scrollTop((contentHeight - containerHeight) * positionRatio);
381
+
382
+ // update bar position
383
+ updateBarSizeAndPosition();
384
+ });
385
+
386
+ $scrollbarX.bind('click.perfect-scrollbar', stopPropagation);
387
+ $scrollbarXRail.bind('click.perfect-scrollbar', function (e) {
388
+ var halfOfScrollbarLength = parseInt(scrollbarXWidth / 2, 10),
389
+ positionLeft = e.pageX - $scrollbarXRail.offset().left - halfOfScrollbarLength,
390
+ maxPositionLeft = containerWidth - scrollbarXWidth,
391
+ positionRatio = positionLeft / maxPositionLeft;
392
+
393
+ if (positionRatio < 0) {
394
+ positionRatio = 0;
395
+ } else if (positionRatio > 1) {
396
+ positionRatio = 1;
397
+ }
398
+
399
+ $this.scrollLeft((contentWidth - containerWidth) * positionRatio);
400
+
401
+ // update bar position
402
+ updateBarSizeAndPosition();
403
+ });
404
+ };
405
+
406
+ // bind mobile touch handler
407
+ var bindMobileTouchHandler = function () {
408
+ var applyTouchMove = function (differenceX, differenceY) {
409
+ $this.scrollTop($this.scrollTop() - differenceY);
410
+ $this.scrollLeft($this.scrollLeft() - differenceX);
411
+
412
+ // update bar position
413
+ updateBarSizeAndPosition();
414
+ };
415
+
416
+ var startCoords = {},
417
+ startTime = 0,
418
+ speed = {},
419
+ breakingProcess = null,
420
+ inGlobalTouch = false;
421
+
422
+ $(window).bind("touchstart.perfect-scrollbar", function (e) {
423
+ inGlobalTouch = true;
424
+ });
425
+ $(window).bind("touchend.perfect-scrollbar", function (e) {
426
+ inGlobalTouch = false;
427
+ });
428
+
429
+ $this.bind("touchstart.perfect-scrollbar", function (e) {
430
+ var touch = e.originalEvent.targetTouches[0];
431
+
432
+ startCoords.pageX = touch.pageX;
433
+ startCoords.pageY = touch.pageY;
434
+
435
+ startTime = (new Date()).getTime();
436
+
437
+ if (breakingProcess !== null) {
438
+ clearInterval(breakingProcess);
439
+ }
440
+
441
+ e.stopPropagation();
442
+ });
443
+ $this.bind("touchmove.perfect-scrollbar", function (e) {
444
+ if (!inGlobalTouch && e.originalEvent.targetTouches.length === 1) {
445
+ var touch = e.originalEvent.targetTouches[0];
446
+
447
+ var currentCoords = {};
448
+ currentCoords.pageX = touch.pageX;
449
+ currentCoords.pageY = touch.pageY;
450
+
451
+ var differenceX = currentCoords.pageX - startCoords.pageX,
452
+ differenceY = currentCoords.pageY - startCoords.pageY;
453
+
454
+ applyTouchMove(differenceX, differenceY);
455
+ startCoords = currentCoords;
456
+
457
+ var currentTime = (new Date()).getTime();
458
+ speed.x = differenceX / (currentTime - startTime);
459
+ speed.y = differenceY / (currentTime - startTime);
460
+ startTime = currentTime;
461
+
462
+ e.preventDefault();
463
+ }
464
+ });
465
+ $this.bind("touchend.perfect-scrollbar", function (e) {
466
+ clearInterval(breakingProcess);
467
+ breakingProcess = setInterval(function () {
468
+ if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {
469
+ clearInterval(breakingProcess);
470
+ return;
471
+ }
472
+
473
+ applyTouchMove(speed.x * 30, speed.y * 30);
474
+
475
+ speed.x *= 0.8;
476
+ speed.y *= 0.8;
477
+ }, 10);
478
+ });
479
+ };
480
+
481
+ var destroy = function () {
482
+ $this.unbind('.perfect-scrollbar');
483
+ $(window).unbind('.perfect-scrollbar');
484
+ $(document).unbind('.perfect-scrollbar');
485
+ $this.data('perfect-scrollbar', null);
486
+ $this.data('perfect-scrollbar-update', null);
487
+ $this.data('perfect-scrollbar-destroy', null);
488
+ $scrollbarX.remove();
489
+ $scrollbarY.remove();
490
+ $scrollbarXRail.remove();
491
+ $scrollbarYRail.remove();
492
+
493
+ // clean all variables
494
+ $scrollbarX =
495
+ $scrollbarY =
496
+ containerWidth =
497
+ containerHeight =
498
+ contentWidth =
499
+ contentHeight =
500
+ scrollbarXWidth =
501
+ scrollbarXLeft =
502
+ scrollbarXBottom =
503
+ scrollbarYHeight =
504
+ scrollbarYTop =
505
+ scrollbarYRight = null;
506
+ };
507
+
508
+ var ieSupport = function (version) {
509
+ $this.addClass('ie').addClass('ie' + version);
510
+
511
+ var bindHoverHandlers = function () {
512
+ var mouseenter = function () {
513
+ $(this).addClass('hover');
514
+ };
515
+ var mouseleave = function () {
516
+ $(this).removeClass('hover');
517
+ };
518
+ $this.bind('mouseenter.perfect-scrollbar', mouseenter).bind('mouseleave.perfect-scrollbar', mouseleave);
519
+ $scrollbarXRail.bind('mouseenter.perfect-scrollbar', mouseenter).bind('mouseleave.perfect-scrollbar', mouseleave);
520
+ $scrollbarYRail.bind('mouseenter.perfect-scrollbar', mouseenter).bind('mouseleave.perfect-scrollbar', mouseleave);
521
+ $scrollbarX.bind('mouseenter.perfect-scrollbar', mouseenter).bind('mouseleave.perfect-scrollbar', mouseleave);
522
+ $scrollbarY.bind('mouseenter.perfect-scrollbar', mouseenter).bind('mouseleave.perfect-scrollbar', mouseleave);
523
+ };
524
+
525
+ var fixIe6ScrollbarPosition = function () {
526
+ updateScrollbarCss = function () {
527
+ $scrollbarX.css({left: scrollbarXLeft + $this.scrollLeft(), bottom: scrollbarXBottom, width: scrollbarXWidth});
528
+ $scrollbarY.css({top: scrollbarYTop + $this.scrollTop(), right: scrollbarYRight, height: scrollbarYHeight});
529
+ $scrollbarX.hide().show();
530
+ $scrollbarY.hide().show();
531
+ };
532
+ updateContentScrollTop = function () {
533
+ var scrollTop = parseInt(scrollbarYTop * contentHeight / containerHeight, 10);
534
+ $this.scrollTop(scrollTop);
535
+ $scrollbarX.css({bottom: scrollbarXBottom});
536
+ $scrollbarX.hide().show();
537
+ };
538
+ updateContentScrollLeft = function () {
539
+ var scrollLeft = parseInt(scrollbarXLeft * contentWidth / containerWidth, 10);
540
+ $this.scrollLeft(scrollLeft);
541
+ $scrollbarY.hide().show();
542
+ };
543
+ };
544
+
545
+ if (version === 6) {
546
+ bindHoverHandlers();
547
+ fixIe6ScrollbarPosition();
548
+ }
549
+ };
550
+
551
+ var supportsTouch = (('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);
552
+
553
+ var initialize = function () {
554
+ var ieMatch = navigator.userAgent.toLowerCase().match(/(msie) ([\w.]+)/);
555
+ if (ieMatch && ieMatch[1] === 'msie') {
556
+ // must be executed at first, because 'ieSupport' may addClass to the container
557
+ ieSupport(parseInt(ieMatch[2], 10));
558
+ }
559
+
560
+ updateBarSizeAndPosition();
561
+ bindMouseScrollXHandler();
562
+ bindMouseScrollYHandler();
563
+ bindRailClickHandler();
564
+ if (supportsTouch) {
565
+ bindMobileTouchHandler();
566
+ }
567
+ if ($this.mousewheel) {
568
+ bindMouseWheelHandler();
569
+ }
570
+ if (settings.useKeyboard) {
571
+ bindKeyboardHandler();
572
+ }
573
+ $this.data('perfect-scrollbar', $this);
574
+ $this.data('perfect-scrollbar-update', updateBarSizeAndPosition);
575
+ $this.data('perfect-scrollbar-destroy', destroy);
576
+ };
577
+
578
+ // initialize
579
+ initialize();
580
+
581
+ return $this;
582
+ });
583
+ };
584
+ }));