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.