PageSourceSearch

https://newhavenfuneralcentre.com/skin-files/New-Haven-Semi-Custom/js/carousel.js

js newhavenfuneralcentre.com collected 2026-09-26 02:37:26 UTC 5,376 bytes, 141 lines download raw bytes

1YUI().add("scriptlibrary.Carousel", function (Y) {
2    function Carousel(itemsPerPage, containerSelector, itemSelector, pagerContainerSelector, arrowContainerSelector) {
3        initializeMembers.call(this, itemsPerPage, containerSelector, itemSelector, pagerContainerSelector, arrowContainerSelector);
4    }
5    
6    var initializeMembers = function(itemsPerPage, containerSelector, itemSelector, pagerContainerSelector, arrowContainerSelector) {
7        var container = Y.one(containerSelector),
8            tributes = container.all(itemSelector),
9            numPages = Math.ceil(tributes.size() / itemsPerPage),
10            page = 0,
11            pageButtons = [],
12            buildPager = function() {
13                var pagerContainer = Y.Node.create('<div class="pager"></div>');
14
15                for (var i = 0; i < numPages; ++i) {
16                    var pageButton = Y.Node.create('<div class="page-button"></div>');
17                    pagerContainer.append(pageButton);
18                    pageButtons.push(pageButton);
19                }
20
21                container.one(pagerContainerSelector).prepend(pagerContainer);
22
23                var leftButton = Y.Node.create('<div class="arrangement-page-left">S</div>');
24                var rightButton = Y.Node.create('<div class="arrangement-page-right">s</div>');
25
26                container.one(arrowContainerSelector).prepend(leftButton);
27                container.one(arrowContainerSelector).prepend(rightButton);
28
29                rightButton.on("click", function() {
30                    var oldPage = page;
31                    page = nextPage(page);
32
33                    tributeTransition(page, oldPage);
34                });
35
36                leftButton.on("click", function() {
37                    var oldPage = page;
38                    page = prevPage(page);
39
40                    tributeTransition(page, oldPage);
41                });
42
43                for (var i = 0; i < numPages; ++i) {
44                    (function(pageNumber) {
45                        pageButtons[pageNumber].on("click", function() {
46                            if (pageNumber === page) {
47                                return;
48                            }
49
50                            var oldPage = page;
51                            page = pageNumber;
52                            tributeTransition(page, oldPage);
53                        });
54                    })(i);
55                }
56            },
57
58            tributeNodes = function(page) {
59                var pageStart = page * itemsPerPage;
60                var pageEnd = Math.min(pageStart + itemsPerPage, tributes.size());
61                return tributes.slice(pageStart, pageEnd);
62            },
63
64            tributeTransition = function(page, oldPage) {
65                pageButtons[oldPage].toggleClass("active", false);
66                pageButtons[page].toggleClass("active", true);
67
68                if (page > oldPage) {
69                    transitionToLeft(oldPage, function() {transitionFromRight(page);});
70                }
71                else {
72                    transitionToRight(oldPage, function() {transitionFromLeft(page);});
73                }
74            },
75
76            slideTransitionBuilder = function(start, stop, hide) {
77                return function(page, callAfter) {
78                    var nodes = tributeNodes(page);
79                    var endFn = function() {
80                        if (hide) {
81                            nodes.hide();
82                        }
83
84                        if (callAfter) {
85                            callAfter();
86                        }
87                    };
88
89                    if (!hide) {
90                        nodes.show();
91                        nodes.setStyle("opacity", "0");
92                    }
93                    else {
94                        nodes.setStyle("opacity", "1");
95                    }
96
97                    nodes.setStyle("left", start + "px");
98
99                    nodes.transition({
100                        duration: 0.1,
101                        left: stop + "px",
102                        opacity: hide ? 0 : 1
103                    },
104                    endFn);
105                };
106            },
107            
108            transitionFromRight = slideTransitionBuilder(60, 0, false),
109            transitionToRight = slideTransitionBuilder(0, 60, true),
110            transitionFromLeft = slideTransitionBuilder(-60, 0, false),
111            transitionToLeft = slideTransitionBuilder(0, -60, true),
112
113            nextPage = function(pageNumber) {
114                if (++pageNumber >= numPages) {
115                    pageNumber = 0;
116                }
117
118                return pageNumber;
119            },
120
121            prevPage = function(pageNumber) {
122                if (--pageNumber < 0) {
123                    pageNumber = numPages - 1;
124                }
125
126                return pageNumber;
127            };
128
129        if (numPages > 0) {
130            buildPager();
131            tributes.hide();
132            tributeNodes(0).show();
133            pageButtons[0].toggleClass("active", true);
134        }
135    };
136    
137    Y.scriptlibrary = Y.scriptlibrary || {};
138    Y.scriptlibrary.Carousel = Carousel;
139}, "0.1", {
140    requires: ['transition', 'node', 'event']
141});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.