PageSourceSearch

http://llmotorsport.se/resources/scripts/gallery/jquery.ds.pager-1.0.2.js

js llmotorsport.se collected 2026-09-30 21:13:23 UTC 6,747 bytes, 225 lines download raw bytes

1/*global jQuery */
2/*jslint browser:true, eqeqeq:true, onevar:true, undef:true, nomen:true */
3(function ($) {
4$.fn.dsPager = function (opts) 
5{
6    /**
7     * Fix for IE9 if console.log/debug is used
8     */
9    if (!window.console) window.console = {};
10    if (!window.console.log) window.console.log = function () { };
11    if (!window.console.debug) window.console.debug = function () { };
12	
13	var parent = this,
14		defaults = {
15			pageContainer : $("#ds-pager"),     // [required] The page link container, made visible if more than one page
16			previous : $("#ds-previous-page"),  // [required] "previous" element
17			next : $("#ds-next-page"),          // [required] "next" element
18			first : $("#ds-first-page"),        // [required] "first" element
19			last : $("#ds-last-page"),          // [required] "last" element
20			pageNumber : $("#ds-page-number"),  // [required] "page number" element, this element is cloned to create pages as necessary
21			rows : parent.find("> tbody > tr"), // [optional] The "rows" to manipulate when switching pages
22			visiblePages : 5,                   // [optional] Number of pages to show
23			rowsPerPage : 5,                    // [optional] Rows per page
24			itemsPerRow : 1,                    // [optional] Items per row
25			moreClass : "more",                 // [optional] CSS class for "..." elements
26			disabledClass : "disabled",         // [optional] CSS class added for disabled elements (next/previous)
27			activeClass : "active",             // [optional] CSS class added for "active" page link
28			fadeSpeed : "normal",               // [optional] Fade speed between page transitions
29			batchSize : 1                       // [optional] Number of table rows per image row
30		},
31		
32		options = $.extend(defaults, opts),
33        ie6, rows, totalItems, totalPages, currentPage, disabledClass, activeClass,
34		idPrefix, moreBefore, moreAfter, pageNumbers;
35
36	// Show/hide appropriate rows
37	function render ()
38	{
39		var minRow = currentPage * options.rowsPerPage * options.batchSize,
40			maxRow = (currentPage + 1) * options.rowsPerPage * options.batchSize,
41			visiblePages = options.visiblePages || Number.MAX_VALUE,
42			availablePages = pageNumbers.size(),
43			minPage = Math.max(0, Math.min(currentPage - Math.floor(visiblePages / 2), availablePages - visiblePages)),
44			maxPage = Math.min(availablePages, minPage + visiblePages);
45
46
47
48		// Show/hide rows as necessary
49		rows.hide().slice(minRow, maxRow).show();
50
51		// Set page link "active" class
52		pageNumbers.removeClass(activeClass).eq(currentPage).addClass(activeClass); 
53
54		// Show hide page links as necessary
55		pageNumbers.hide().slice(minPage, maxPage).show();
56		if (minPage === 0)
57		{
58			moreBefore.hide();
59		}
60		else
61		{
62			moreBefore.show();
63		}
64		if (maxPage === availablePages)
65		{
66			moreAfter.hide();
67		}
68		else
69		{
70			moreAfter.show();
71		}
72		
73		// Set "next" / "last" class according to current page number
74		if (currentPage === (totalPages - 1)) 
75		{
76			options.next.addClass(disabledClass);
77			options.last.addClass(disabledClass);
78		} 
79		else 
80		{
81			options.next.removeClass(disabledClass);
82			options.last.removeClass(disabledClass);
83		}
84				
85		// Set "previous" / "first" class according to current page number
86		if (currentPage === 0) 
87		{
88			options.previous.addClass(disabledClass);
89			options.first.addClass(disabledClass);
90		} 
91		else 
92		{
93			options.previous.removeClass(disabledClass);
94			options.first.removeClass(disabledClass);
95		}
96	}
97		
98	function go (page)
99	{
100		var speed = currentPage === null ? 0 : options.fadeSpeed;
101		if (page >= 0 && page < totalPages && page !== currentPage && totalPages > 1)
102		{
103			currentPage = page;
104			//parent.fixIEBackground();
105			parent.animate({
106					opacity : 0
107				}, speed, "linear", function ()
108				{
109					render();
110					if (ie6)
111					{
112						$("body").hide().show();
113					}
114					parent.animate({
115						opacity : 1
116					}, speed, "linear");
117				}
118			);
119		}
120	}
121	
122	function step (image)
123	{
124		var page = Math.floor(image / (options.rowsPerPage * options.itemsPerRow));
125		go(page);
126	}
127
128	function initialize ()
129	{
130	    // Look for pager-settings in CSS content
131	    if ($("#pager-settings").length)
132		{
133			var visiblePages = $("#pager-settings #visible-pages").css("width");
134			var vPages = parseInt(visiblePages.replace(/[^\d\.]/g, ''));
135			if (vPages) {
136				options.visiblePages = vPages;
137				console.debug("vPages: " + options.visiblePages);
138			}
139			var rowsPerPage = $("#pager-settings #rows-per-page").css("width");
140			var nrRows = parseInt(rowsPerPage.replace(/[^\d\.]/g, ''));
141			if (nrRows) {
142				options.rowsPerPage = nrRows;
143				console.debug("nrRows: " + options.rowsPerPage);
144			}
145		}
146
147        // Initialize all internal variables
148	    ie6 = ($.browser.msie && $.browser.version < "7");
149	    rows = options.rows;
150	    totalItems = rows.length;
151	    totalPages = options.rowsPerPage ? Math.ceil((totalItems / (options.rowsPerPage * options.batchSize))) : 1;
152	    currentPage = null;
153	    disabledClass = options.disabledClass;
154	    activeClass = options.activeClass;
155	    idPrefix = options.pageNumber.attr("id") || "pager";
156	    moreBefore = options.pageNumber.clone().text("...").removeAttr("href").removeAttr("id").addClass(options.moreClass);
157	    moreAfter = moreBefore.clone();
158	    
159		var i, clone;
160		if (totalPages <= 1)
161		{
162			rows.show();
163			return;
164		}
165
166	    // Add event handler for first page number
167		options.pageNumber.click(
168			function ()
169			{
170				var page = parseInt(this.id.replace(idPrefix, ""));
171				go(page);
172				return false;
173			}
174		);
175
176		// Event handlers for next/previous/first/last
177		options.previous.click(
178			function ()
179			{
180				go(currentPage - 1);
181				return false;
182			}
183		);
184		options.next.click(
185			function ()
186			{
187				go(currentPage + 1);
188				return false;
189			}
190		);
191		options.first.click(
192			function ()
193			{
194				go(0);
195				return false;
196			}
197		);
198		options.last.click(
199			function ()
200			{
201				go(totalPages - 1);
202				return false;
203			}
204		);
205	
206		// Add additional page numbers
207		for (i = totalPages - 1; i >= 0; i--)
208		{
209			clone = options.pageNumber.clone(true);
210			clone.attr("id", idPrefix + i);
211			clone.html(i + 1);
212			clone.insertAfter(options.pageNumber);
213		}
214		pageNumbers = options.pageNumber.parent().find("*[id^=" + idPrefix + "]").not(options.pageNumber);
215		moreBefore.insertBefore(pageNumbers.slice(0, 1));
216		moreAfter.insertAfter(pageNumbers.slice(pageNumbers.size() - 1, pageNumbers.size()));
217		options.pageNumber.hide();
218		options.pageContainer.show();
219		go(0);
220	}
221	
222	initialize();
223	return step;
224};
225})(jQuery);

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.