Ticket #3914: effects.scrollview.js.txt

File effects.scrollview.js.txt, 1.2 KB (added by biGGs, 13 years ago)
Line 
1/*
2 * jQuery UI Effects Scrollview
3 *
4 * Copyright (c) 2009 Philipp Simon ([email protected])
5 * Dual licensed under the MIT (MIT-LICENSE.txt)
6 * and GPL (GPL-LICENSE.txt) licenses.
7 *
8 * Depends:
9 *  effects.core.js
10 *
11 */
12;(function($) {
13
14$.effects.scrollview = function(o) {
15        return this.queue(function() {
16
17                // Create element
18                var el = $(this);
19
20                // Set options
21                $.effects.setMode(el, 'show');
22                var offset = o.options.offset || 10;
23
24                var vpTop = $(window).scrollTop();
25                var lyTop = el.offset().top;
26
27                if(lyTop - offset < vpTop) {
28                        scrollTo(lyTop - offset);
29                } else {
30                        var vpHeight = self.innerHeight || $(window).height();
31                        var lyHeight = el.height();
32
33                        if (lyTop + lyHeight + offset > vpTop + vpHeight) {
34                                if (lyHeight > vpHeight) {
35                                        scrollTo(lyTop - offset);
36                                } else {
37                                        scrollTo(lyTop + lyHeight + offset - vpHeight);
38                                }
39                        } else {
40                                if(o.callback) o.callback.apply(el.get(0));
41                                el.dequeue();
42                        }
43                }
44
45                function scrollTo(y) {
46                        var animation = {'scrollTop': y};
47                        $($.browser.safari ? 'body' : 'html').animate(animation, {queue: false, duration: o.duration, easing: o.options.easing, complete: function() {
48                                if(o.callback) o.callback.apply(el.get(0), arguments);
49                                el.dequeue();
50                        }});
51                };
52        });
53
54};
55
56})(jQuery);