ruby_gallery 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.markdown CHANGED
@@ -27,3 +27,7 @@
27
27
  ## You can reorder images in box (default you can reorderable)
28
28
  You can set it to false
29
29
  <%= show_gallery_images :users, {reorder: false} %>
30
+
31
+ ## You can disable ``close link``
32
+
33
+ <%= show_gallery_images :users, {reorder: false , close: false }
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.7
1
+ 0.1.8
@@ -1,4 +1,8 @@
1
1
  //= require ./jquery-ui
2
2
  //= require ./jquery.colorbox
3
3
  //= require ./ruby_gallery
4
- //= require jquery-fileupload/basic
4
+ //= require jquery-fileupload/basic
5
+ //= require ./ga
6
+ //= require ./main
7
+ //= require ./jquery.nanoscroller
8
+ //= require ./overthrow.min
@@ -0,0 +1,9 @@
1
+ var _gaq = _gaq || [];
2
+ _gaq.push(['_setAccount', 'UA-6984974-1']);
3
+ _gaq.push(['_trackPageview']);
4
+
5
+ (function() {
6
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
7
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
8
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
9
+ })();
@@ -0,0 +1,752 @@
1
+ /*! nanoScrollerJS - v0.7.2
2
+ * http://jamesflorentino.github.com/nanoScrollerJS/
3
+ * Copyright (c) 2013 James Florentino; Licensed MIT */
4
+
5
+
6
+ (function($, window, document) {
7
+ "use strict";
8
+
9
+ var BROWSER_IS_IE7, BROWSER_SCROLLBAR_WIDTH, DOMSCROLL, DOWN, DRAG, KEYDOWN, KEYUP, MOUSEDOWN, MOUSEMOVE, MOUSEUP, MOUSEWHEEL, NanoScroll, PANEDOWN, RESIZE, SCROLL, SCROLLBAR, TOUCHMOVE, UP, WHEEL, defaults, getBrowserScrollbarWidth;
10
+ defaults = {
11
+ /**
12
+ a classname for the pane element.
13
+ @property paneClass
14
+ @type String
15
+ @default 'pane'
16
+ */
17
+
18
+ paneClass: 'pane',
19
+ /**
20
+ a classname for the slider element.
21
+ @property sliderClass
22
+ @type String
23
+ @default 'slider'
24
+ */
25
+
26
+ sliderClass: 'slider',
27
+ /**
28
+ a classname for the content element.
29
+ @property contentClass
30
+ @type String
31
+ @default 'content'
32
+ */
33
+
34
+ contentClass: 'content',
35
+ /**
36
+ a setting to enable native scrolling in iOS devices.
37
+ @property iOSNativeScrolling
38
+ @type Boolean
39
+ @default false
40
+ */
41
+
42
+ iOSNativeScrolling: false,
43
+ /**
44
+ a setting to prevent the rest of the page being
45
+ scrolled when user scrolls the `.content` element.
46
+ @property preventPageScrolling
47
+ @type Boolean
48
+ @default false
49
+ */
50
+
51
+ preventPageScrolling: false,
52
+ /**
53
+ a setting to disable binding to the resize event.
54
+ @property disableResize
55
+ @type Boolean
56
+ @default false
57
+ */
58
+
59
+ disableResize: false,
60
+ /**
61
+ a setting to make the scrollbar always visible.
62
+ @property alwaysVisible
63
+ @type Boolean
64
+ @default false
65
+ */
66
+
67
+ alwaysVisible: false,
68
+ /**
69
+ a default timeout for the `flash()` method.
70
+ @property flashDelay
71
+ @type Number
72
+ @default 1500
73
+ */
74
+
75
+ flashDelay: 1500,
76
+ /**
77
+ a minimum height for the `.slider` element.
78
+ @property sliderMinHeight
79
+ @type Number
80
+ @default 20
81
+ */
82
+
83
+ sliderMinHeight: 20,
84
+ /**
85
+ a maximum height for the `.slider` element.
86
+ @property sliderMaxHeight
87
+ @type Number
88
+ @default null
89
+ */
90
+
91
+ sliderMaxHeight: null
92
+ };
93
+ /**
94
+ @property SCROLLBAR
95
+ @type String
96
+ @static
97
+ @final
98
+ @private
99
+ */
100
+
101
+ SCROLLBAR = 'scrollbar';
102
+ /**
103
+ @property SCROLL
104
+ @type String
105
+ @static
106
+ @final
107
+ @private
108
+ */
109
+
110
+ SCROLL = 'scroll';
111
+ /**
112
+ @property MOUSEDOWN
113
+ @type String
114
+ @final
115
+ @private
116
+ */
117
+
118
+ MOUSEDOWN = 'mousedown';
119
+ /**
120
+ @property MOUSEMOVE
121
+ @type String
122
+ @static
123
+ @final
124
+ @private
125
+ */
126
+
127
+ MOUSEMOVE = 'mousemove';
128
+ /**
129
+ @property MOUSEWHEEL
130
+ @type String
131
+ @final
132
+ @private
133
+ */
134
+
135
+ MOUSEWHEEL = 'mousewheel';
136
+ /**
137
+ @property MOUSEUP
138
+ @type String
139
+ @static
140
+ @final
141
+ @private
142
+ */
143
+
144
+ MOUSEUP = 'mouseup';
145
+ /**
146
+ @property RESIZE
147
+ @type String
148
+ @final
149
+ @private
150
+ */
151
+
152
+ RESIZE = 'resize';
153
+ /**
154
+ @property DRAG
155
+ @type String
156
+ @static
157
+ @final
158
+ @private
159
+ */
160
+
161
+ DRAG = 'drag';
162
+ /**
163
+ @property UP
164
+ @type String
165
+ @static
166
+ @final
167
+ @private
168
+ */
169
+
170
+ UP = 'up';
171
+ /**
172
+ @property PANEDOWN
173
+ @type String
174
+ @static
175
+ @final
176
+ @private
177
+ */
178
+
179
+ PANEDOWN = 'panedown';
180
+ /**
181
+ @property DOMSCROLL
182
+ @type String
183
+ @static
184
+ @final
185
+ @private
186
+ */
187
+
188
+ DOMSCROLL = 'DOMMouseScroll';
189
+ /**
190
+ @property DOWN
191
+ @type String
192
+ @static
193
+ @final
194
+ @private
195
+ */
196
+
197
+ DOWN = 'down';
198
+ /**
199
+ @property WHEEL
200
+ @type String
201
+ @static
202
+ @final
203
+ @private
204
+ */
205
+
206
+ WHEEL = 'wheel';
207
+ /**
208
+ @property KEYDOWN
209
+ @type String
210
+ @static
211
+ @final
212
+ @private
213
+ */
214
+
215
+ KEYDOWN = 'keydown';
216
+ /**
217
+ @property KEYUP
218
+ @type String
219
+ @static
220
+ @final
221
+ @private
222
+ */
223
+
224
+ KEYUP = 'keyup';
225
+ /**
226
+ @property TOUCHMOVE
227
+ @type String
228
+ @static
229
+ @final
230
+ @private
231
+ */
232
+
233
+ TOUCHMOVE = 'touchmove';
234
+ /**
235
+ @property BROWSER_IS_IE7
236
+ @type Boolean
237
+ @static
238
+ @final
239
+ @private
240
+ */
241
+
242
+ BROWSER_IS_IE7 = window.navigator.appName === 'Microsoft Internet Explorer' && /msie 7./i.test(window.navigator.appVersion) && window.ActiveXObject;
243
+ /**
244
+ @property BROWSER_SCROLLBAR_WIDTH
245
+ @type Number
246
+ @static
247
+ @default null
248
+ @private
249
+ */
250
+
251
+ BROWSER_SCROLLBAR_WIDTH = null;
252
+ /**
253
+ Returns browser's native scrollbar width
254
+ @method getBrowserScrollbarWidth
255
+ @return {Number} the scrollbar width in pixels
256
+ @static
257
+ @private
258
+ */
259
+
260
+ getBrowserScrollbarWidth = function() {
261
+ var outer, outerStyle, scrollbarWidth;
262
+ outer = document.createElement('div');
263
+ outerStyle = outer.style;
264
+ outerStyle.position = 'absolute';
265
+ outerStyle.width = '100px';
266
+ outerStyle.height = '100px';
267
+ outerStyle.overflow = SCROLL;
268
+ outerStyle.top = '-9999px';
269
+ document.body.appendChild(outer);
270
+ scrollbarWidth = outer.offsetWidth - outer.clientWidth;
271
+ document.body.removeChild(outer);
272
+ return scrollbarWidth;
273
+ };
274
+ /**
275
+ @class NanoScroll
276
+ @param element {HTMLElement|Node} the main element
277
+ @param options {Object} nanoScroller's options
278
+ @constructor
279
+ */
280
+
281
+ NanoScroll = (function() {
282
+
283
+ function NanoScroll(el, options) {
284
+ this.el = el;
285
+ this.options = options;
286
+ BROWSER_SCROLLBAR_WIDTH || (BROWSER_SCROLLBAR_WIDTH = getBrowserScrollbarWidth());
287
+ this.$el = $(this.el);
288
+ this.doc = $(document);
289
+ this.win = $(window);
290
+ this.$content = this.$el.children("." + options.contentClass);
291
+ this.$content.attr('tabindex', 0);
292
+ this.content = this.$content[0];
293
+ if (this.options.iOSNativeScrolling && (this.el.style.WebkitOverflowScrolling != null)) {
294
+ this.nativeScrolling();
295
+ } else {
296
+ this.generate();
297
+ }
298
+ this.createEvents();
299
+ this.addEvents();
300
+ this.reset();
301
+ }
302
+
303
+ /**
304
+ Prevents the rest of the page being scrolled
305
+ when user scrolls the `.content` element.
306
+ @method preventScrolling
307
+ @param event {Event}
308
+ @param direction {String} Scroll direction (up or down)
309
+ @private
310
+ */
311
+
312
+
313
+ NanoScroll.prototype.preventScrolling = function(e, direction) {
314
+ if (!this.isActive) {
315
+ return;
316
+ }
317
+ if (e.type === DOMSCROLL) {
318
+ if (direction === DOWN && e.originalEvent.detail > 0 || direction === UP && e.originalEvent.detail < 0) {
319
+ e.preventDefault();
320
+ }
321
+ } else if (e.type === MOUSEWHEEL) {
322
+ if (!e.originalEvent || !e.originalEvent.wheelDelta) {
323
+ return;
324
+ }
325
+ if (direction === DOWN && e.originalEvent.wheelDelta < 0 || direction === UP && e.originalEvent.wheelDelta > 0) {
326
+ e.preventDefault();
327
+ }
328
+ }
329
+ };
330
+
331
+ /**
332
+ Enable iOS native scrolling
333
+ */
334
+
335
+
336
+ NanoScroll.prototype.nativeScrolling = function() {
337
+ this.$content.css({
338
+ WebkitOverflowScrolling: 'touch'
339
+ });
340
+ this.iOSNativeScrolling = true;
341
+ this.isActive = true;
342
+ };
343
+
344
+ /**
345
+ Updates those nanoScroller properties that
346
+ are related to current scrollbar position.
347
+ @method updateScrollValues
348
+ @private
349
+ */
350
+
351
+
352
+ NanoScroll.prototype.updateScrollValues = function() {
353
+ var content;
354
+ content = this.content;
355
+ this.maxScrollTop = content.scrollHeight - content.clientHeight;
356
+ this.contentScrollTop = content.scrollTop;
357
+ if (!this.iOSNativeScrolling) {
358
+ this.maxSliderTop = this.paneHeight - this.sliderHeight;
359
+ this.sliderTop = this.contentScrollTop * this.maxSliderTop / this.maxScrollTop;
360
+ }
361
+ };
362
+
363
+ /**
364
+ Creates event related methods
365
+ @method createEvents
366
+ @private
367
+ */
368
+
369
+
370
+ NanoScroll.prototype.createEvents = function() {
371
+ var _this = this;
372
+ this.events = {
373
+ down: function(e) {
374
+ _this.isBeingDragged = true;
375
+ _this.offsetY = e.pageY - _this.slider.offset().top;
376
+ _this.pane.addClass('active');
377
+ _this.doc.bind(MOUSEMOVE, _this.events[DRAG]).bind(MOUSEUP, _this.events[UP]);
378
+ return false;
379
+ },
380
+ drag: function(e) {
381
+ _this.sliderY = e.pageY - _this.$el.offset().top - _this.offsetY;
382
+ _this.scroll();
383
+ _this.updateScrollValues();
384
+ if (_this.contentScrollTop >= _this.maxScrollTop) {
385
+ _this.$el.trigger('scrollend');
386
+ } else if (_this.contentScrollTop === 0) {
387
+ _this.$el.trigger('scrolltop');
388
+ }
389
+ return false;
390
+ },
391
+ up: function(e) {
392
+ _this.isBeingDragged = false;
393
+ _this.pane.removeClass('active');
394
+ _this.doc.unbind(MOUSEMOVE, _this.events[DRAG]).unbind(MOUSEUP, _this.events[UP]);
395
+ return false;
396
+ },
397
+ resize: function(e) {
398
+ _this.reset();
399
+ },
400
+ panedown: function(e) {
401
+ _this.sliderY = (e.offsetY || e.originalEvent.layerY) - (_this.sliderHeight * 0.5);
402
+ _this.scroll();
403
+ _this.events.down(e);
404
+ return false;
405
+ },
406
+ scroll: function(e) {
407
+ if (_this.isBeingDragged) {
408
+ return;
409
+ }
410
+ _this.updateScrollValues();
411
+ if (!_this.iOSNativeScrolling) {
412
+ _this.sliderY = _this.sliderTop;
413
+ _this.slider.css({
414
+ top: _this.sliderTop
415
+ });
416
+ }
417
+ if (e == null) {
418
+ return;
419
+ }
420
+ if (_this.contentScrollTop >= _this.maxScrollTop) {
421
+ if (_this.options.preventPageScrolling) {
422
+ _this.preventScrolling(e, DOWN);
423
+ }
424
+ _this.$el.trigger('scrollend');
425
+ } else if (_this.contentScrollTop === 0) {
426
+ if (_this.options.preventPageScrolling) {
427
+ _this.preventScrolling(e, UP);
428
+ }
429
+ _this.$el.trigger('scrolltop');
430
+ }
431
+ },
432
+ wheel: function(e) {
433
+ if (e == null) {
434
+ return;
435
+ }
436
+ _this.sliderY += -e.wheelDeltaY || -e.delta;
437
+ _this.scroll();
438
+ return false;
439
+ }
440
+ };
441
+ };
442
+
443
+ /**
444
+ Adds event listeners with jQuery.
445
+ @method addEvents
446
+ @private
447
+ */
448
+
449
+
450
+ NanoScroll.prototype.addEvents = function() {
451
+ var events;
452
+ this.removeEvents();
453
+ events = this.events;
454
+ if (!this.options.disableResize) {
455
+ this.win.bind(RESIZE, events[RESIZE]);
456
+ }
457
+ if (!this.iOSNativeScrolling) {
458
+ this.slider.bind(MOUSEDOWN, events[DOWN]);
459
+ this.pane.bind(MOUSEDOWN, events[PANEDOWN]).bind("" + MOUSEWHEEL + " " + DOMSCROLL, events[WHEEL]);
460
+ }
461
+ this.$content.bind("" + SCROLL + " " + MOUSEWHEEL + " " + DOMSCROLL + " " + TOUCHMOVE, events[SCROLL]);
462
+ };
463
+
464
+ /**
465
+ Removes event listeners with jQuery.
466
+ @method removeEvents
467
+ @private
468
+ */
469
+
470
+
471
+ NanoScroll.prototype.removeEvents = function() {
472
+ var events;
473
+ events = this.events;
474
+ this.win.unbind(RESIZE, events[RESIZE]);
475
+ if (!this.iOSNativeScrolling) {
476
+ this.slider.unbind();
477
+ this.pane.unbind();
478
+ }
479
+ this.$content.unbind("" + SCROLL + " " + MOUSEWHEEL + " " + DOMSCROLL + " " + TOUCHMOVE, events[SCROLL]);
480
+ };
481
+
482
+ /**
483
+ Generates nanoScroller's scrollbar and elements for it.
484
+ @method generate
485
+ @chainable
486
+ @private
487
+ */
488
+
489
+
490
+ NanoScroll.prototype.generate = function() {
491
+ var contentClass, cssRule, options, paneClass, sliderClass;
492
+ options = this.options;
493
+ paneClass = options.paneClass, sliderClass = options.sliderClass, contentClass = options.contentClass;
494
+ if (!this.$el.find("" + paneClass).length && !this.$el.find("" + sliderClass).length) {
495
+ this.$el.append("<div class=\"" + paneClass + "\"><div class=\"" + sliderClass + "\" /></div>");
496
+ }
497
+ this.pane = this.$el.children("." + paneClass);
498
+ this.slider = this.pane.find("." + sliderClass);
499
+ if (BROWSER_SCROLLBAR_WIDTH) {
500
+ cssRule = this.$el.css('direction') === 'rtl' ? {
501
+ left: -BROWSER_SCROLLBAR_WIDTH
502
+ } : {
503
+ right: -BROWSER_SCROLLBAR_WIDTH
504
+ };
505
+ this.$el.addClass('has-scrollbar');
506
+ }
507
+ if (cssRule != null) {
508
+ this.$content.css(cssRule);
509
+ }
510
+ return this;
511
+ };
512
+
513
+ /**
514
+ @method restore
515
+ @private
516
+ */
517
+
518
+
519
+ NanoScroll.prototype.restore = function() {
520
+ this.stopped = false;
521
+ this.pane.show();
522
+ this.addEvents();
523
+ };
524
+
525
+ /**
526
+ Resets nanoScroller's scrollbar.
527
+ @method reset
528
+ @chainable
529
+ @example
530
+ $(".nano").nanoScroller();
531
+ */
532
+
533
+
534
+ NanoScroll.prototype.reset = function() {
535
+ var content, contentHeight, contentStyle, contentStyleOverflowY, paneBottom, paneHeight, paneOuterHeight, paneTop, sliderHeight;
536
+ if (this.iOSNativeScrolling) {
537
+ this.contentHeight = this.content.scrollHeight;
538
+ return;
539
+ }
540
+ if (!this.$el.find("." + this.options.paneClass).length) {
541
+ this.generate().stop();
542
+ }
543
+ if (this.stopped) {
544
+ this.restore();
545
+ }
546
+ content = this.content;
547
+ contentStyle = content.style;
548
+ contentStyleOverflowY = contentStyle.overflowY;
549
+ if (BROWSER_IS_IE7) {
550
+ this.$content.css({
551
+ height: this.$content.height()
552
+ });
553
+ }
554
+ contentHeight = content.scrollHeight + BROWSER_SCROLLBAR_WIDTH;
555
+ paneHeight = this.pane.outerHeight();
556
+ paneTop = parseInt(this.pane.css('top'), 10);
557
+ paneBottom = parseInt(this.pane.css('bottom'), 10);
558
+ paneOuterHeight = paneHeight + paneTop + paneBottom;
559
+ sliderHeight = Math.round(paneOuterHeight / contentHeight * paneOuterHeight);
560
+ if (sliderHeight < this.options.sliderMinHeight) {
561
+ sliderHeight = this.options.sliderMinHeight;
562
+ } else if ((this.options.sliderMaxHeight != null) && sliderHeight > this.options.sliderMaxHeight) {
563
+ sliderHeight = this.options.sliderMaxHeight;
564
+ }
565
+ if (contentStyleOverflowY === SCROLL && contentStyle.overflowX !== SCROLL) {
566
+ sliderHeight += BROWSER_SCROLLBAR_WIDTH;
567
+ }
568
+ this.maxSliderTop = paneOuterHeight - sliderHeight;
569
+ this.contentHeight = contentHeight;
570
+ this.paneHeight = paneHeight;
571
+ this.paneOuterHeight = paneOuterHeight;
572
+ this.sliderHeight = sliderHeight;
573
+ this.slider.height(sliderHeight);
574
+ this.events.scroll();
575
+ this.pane.show();
576
+ this.isActive = true;
577
+ if ((content.scrollHeight === content.clientHeight) || (this.pane.outerHeight(true) >= content.scrollHeight && contentStyleOverflowY !== SCROLL)) {
578
+ this.pane.hide();
579
+ this.isActive = false;
580
+ } else if (this.el.clientHeight === content.scrollHeight && contentStyleOverflowY === SCROLL) {
581
+ this.slider.hide();
582
+ } else {
583
+ this.slider.show();
584
+ }
585
+ this.pane.css({
586
+ opacity: (this.options.alwaysVisible ? 1 : ''),
587
+ visibility: (this.options.alwaysVisible ? 'visible' : '')
588
+ });
589
+ return this;
590
+ };
591
+
592
+ /**
593
+ @method scroll
594
+ @private
595
+ @example
596
+ $(".nano").nanoScroller({ scroll: 'top' });
597
+ */
598
+
599
+
600
+ NanoScroll.prototype.scroll = function() {
601
+ if (!this.isActive) {
602
+ return;
603
+ }
604
+ this.sliderY = Math.max(0, this.sliderY);
605
+ this.sliderY = Math.min(this.maxSliderTop, this.sliderY);
606
+ this.$content.scrollTop((this.paneHeight - this.contentHeight + BROWSER_SCROLLBAR_WIDTH) * this.sliderY / this.maxSliderTop * -1);
607
+ if (!this.iOSNativeScrolling) {
608
+ this.slider.css({
609
+ top: this.sliderY
610
+ });
611
+ }
612
+ return this;
613
+ };
614
+
615
+ /**
616
+ Scroll at the bottom with an offset value
617
+ @method scrollBottom
618
+ @param offsetY {Number}
619
+ @chainable
620
+ @example
621
+ $(".nano").nanoScroller({ scrollBottom: value });
622
+ */
623
+
624
+
625
+ NanoScroll.prototype.scrollBottom = function(offsetY) {
626
+ if (!this.isActive) {
627
+ return;
628
+ }
629
+ this.reset();
630
+ this.$content.scrollTop(this.contentHeight - this.$content.height() - offsetY).trigger(MOUSEWHEEL);
631
+ return this;
632
+ };
633
+
634
+ /**
635
+ Scroll at the top with an offset value
636
+ @method scrollTop
637
+ @param offsetY {Number}
638
+ @chainable
639
+ @example
640
+ $(".nano").nanoScroller({ scrollTop: value });
641
+ */
642
+
643
+
644
+ NanoScroll.prototype.scrollTop = function(offsetY) {
645
+ if (!this.isActive) {
646
+ return;
647
+ }
648
+ this.reset();
649
+ this.$content.scrollTop(+offsetY).trigger(MOUSEWHEEL);
650
+ return this;
651
+ };
652
+
653
+ /**
654
+ Scroll to an element
655
+ @method scrollTo
656
+ @param node {Node} A node to scroll to.
657
+ @chainable
658
+ @example
659
+ $(".nano").nanoScroller({ scrollTo: $('#a_node') });
660
+ */
661
+
662
+
663
+ NanoScroll.prototype.scrollTo = function(node) {
664
+ if (!this.isActive) {
665
+ return;
666
+ }
667
+ this.reset();
668
+ this.scrollTop($(node).get(0).offsetTop);
669
+ return this;
670
+ };
671
+
672
+ /**
673
+ To stop the operation.
674
+ This option will tell the plugin to disable all event bindings and hide the gadget scrollbar from the UI.
675
+ @method stop
676
+ @chainable
677
+ @example
678
+ $(".nano").nanoScroller({ stop: true });
679
+ */
680
+
681
+
682
+ NanoScroll.prototype.stop = function() {
683
+ this.stopped = true;
684
+ this.removeEvents();
685
+ this.pane.hide();
686
+ return this;
687
+ };
688
+
689
+ /**
690
+ To flash the scrollbar gadget for an amount of time defined in plugin settings (defaults to 1,5s).
691
+ Useful if you want to show the user (e.g. on pageload) that there is more content waiting for him.
692
+ @method flash
693
+ @chainable
694
+ @example
695
+ $(".nano").nanoScroller({ flash: true });
696
+ */
697
+
698
+
699
+ NanoScroll.prototype.flash = function() {
700
+ var _this = this;
701
+ if (!this.isActive) {
702
+ return;
703
+ }
704
+ this.reset();
705
+ this.pane.addClass('flashed');
706
+ setTimeout(function() {
707
+ _this.pane.removeClass('flashed');
708
+ }, this.options.flashDelay);
709
+ return this;
710
+ };
711
+
712
+ return NanoScroll;
713
+
714
+ })();
715
+ $.fn.nanoScroller = function(settings) {
716
+ return this.each(function() {
717
+ var options, scrollbar;
718
+ if (!(scrollbar = this.nanoscroller)) {
719
+ options = $.extend({}, defaults, settings);
720
+ this.nanoscroller = scrollbar = new NanoScroll(this, options);
721
+ }
722
+ if (settings && typeof settings === "object") {
723
+ $.extend(scrollbar.options, settings);
724
+ if (settings.scrollBottom) {
725
+ return scrollbar.scrollBottom(settings.scrollBottom);
726
+ }
727
+ if (settings.scrollTop) {
728
+ return scrollbar.scrollTop(settings.scrollTop);
729
+ }
730
+ if (settings.scrollTo) {
731
+ return scrollbar.scrollTo(settings.scrollTo);
732
+ }
733
+ if (settings.scroll === 'bottom') {
734
+ return scrollbar.scrollBottom(0);
735
+ }
736
+ if (settings.scroll === 'top') {
737
+ return scrollbar.scrollTop(0);
738
+ }
739
+ if (settings.scroll && settings.scroll instanceof $) {
740
+ return scrollbar.scrollTo(settings.scroll);
741
+ }
742
+ if (settings.stop) {
743
+ return scrollbar.stop();
744
+ }
745
+ if (settings.flash) {
746
+ return scrollbar.flash();
747
+ }
748
+ }
749
+ return scrollbar.reset();
750
+ });
751
+ };
752
+ })(jQuery, window, document);