PageSourceSearch

https://www.agrotoulouse.fr/skins/ensat/resources/js/jquery.carousel.min.js

js agrotoulouse.fr collected 2026-10-07 19:41:40 UTC 28,014 bytes, 824 lines download raw bytes

1/* jQuery Carousel 0.9.8
2Copyright 2010 Thomas Lanciaux and Pierre Bertet.
3This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
4 */
5(function($) {
6	$.fn.carousel = function(config) 
7	{
8		var settings = $.extend({
9			direction : "horizontal",
10			loop : false,
11			dispItems : 1,
12			enableTouch: true, 
13			pagination : false,
14			paginationPosition : "inside",
15			autoSlide : false,
16			autoSlideInterval : 3000,
17			arrowKey: false,
18			
19			stopSlideBtn : false,
20			stopSlideTextPause : "Pause",
21			stopSlideTextPlay : "Play",
22		
23			nextBtnText: "Next",
24			prevBtnText: "Previous",
25			btnsPosition : "inside",
26			prevBtnInsert : "insertBefore",
27			nextBtnInsert : "insertAfter",
28			nextBtnInsertFn : false,
29			prevBtnInsertFn : false,
30			delayAutoSlide : false,
31			combinedClasses : false,
32			effect : "slide",
33			slideEasing : "swing",
34			animSpeed : 300,
35			equalWidths : "true",
36			verticalMargin : 0,
37			callback : function() {
38			},
39			useAddress : false,
40			adressIdentifier : "carousel",
41			tabLabel : function(r) {
42				return r
43			},
44			showEmptyItems : true,
45			ajaxMode : false,
46			ajaxUrl : ""
47		}, config);
48		
49		settings.delayAutoSlide = 0 + settings.delayAutoSlide;
50		
51		return this.each(function() {
52					var carouselObject = {
53							$elts : { /* nothing */ },
54							params : settings,
55							launchOnLoad : []
56						};
57					carouselObject.$elts.carousel = $(this).addClass("js");
58					carouselObject.$elts.content = $(this).children().css({
59						position : "absolute",
60						top : 0
61					});
62					carouselObject.$elts.content.find("script[type='text/javascript']").remove();
63					carouselObject.$elts.wrap = carouselObject.$elts.content.wrap('<div class="carousel-wrap"></div>').parent()
64					carouselObject.$elts.wrap.css({
65						overflow : "hidden",
66						position : "relative"
67					});
68
69					
70					function init()
71					{
72						carouselObject.steps = {
73							first : 0,
74							count : carouselObject.$elts.content.children("li").length
75						};
76						carouselObject.$elts.loader = $('<div class="loader"></div>').css({ position : "absolute" });
77						carouselObject.steps.last = carouselObject.steps.count - 1;
78						
79						if (carouselObject.$elts.content.children().length <= 1)
80						{
81							carouselObject.params.pagination = false;
82							carouselObject.params.autoSlide = false;
83							carouselObject.params.enableTouch = false;
84						}
85						
86						// TOUCH HANDLING
87						if (settings.enableTouch)
88						{
89							carouselObject.$elts.content.touchwipe({
90			                    wipeStart: function(startX, startY) {
91			                    	if (carouselObject.$elts.stopSlideBtn)
92			                    	{
93			                    		carouselObject.$elts.stopSlideBtn.trigger('pause');
94			                    	}
95			                    	
96			                        var jul = carouselObject.$elts.content;
97			                        jul[0].initialLeft = jul.position().left;
98			                        jul[0].initialTop = jul.position().top;
99			                        jul[0].onesizeWidth = jul.children("li").width();
100			                        jul[0].onesizeHeight = jul.children("li").height();
101			                        jul[0].maxLeft = -(jul.width() - jul[0].onesizeWidth);
102			                        jul[0].maxTop = -(jul.height() - jul[0].onesizeHeight);
103			                    },
104			                    wipeDown: settings.direction == "horizontal" ? null : function(dy) {
105			                        var ul = carouselObject.$elts.content[0];
106			                    	ul.percentAnim = dy / ul.onesizeHeight; 
107			                    	switch (settings.effect)
108			                    	{
109			                    		case "no":
110			                    			break;
111			                    		case "fade":
112			                    			break;
113			                    		case "slidein":
114			                    		default:
115			                    			ul.style.top = Math.max(ul.maxTop - 50, ul.initialTop - dy) + "px";
116			                    	}
117			                    },
118			                    wipeUp: settings.direction == "horizontal" ? null : function(dy) { 
119			                        var ul = carouselObject.$elts.content[0];
120			                    	ul.percentAnim = dy / ul.onesizeHeight; 
121			                    	switch (settings.effect)
122			                    	{
123			                    		case "no":
124			                    			break;
125			                    		case "fade":
126			                    			break;
127			                    		case "slidein":
128			                    		default:
129			                    			ul.style.top = Math.min(50, ul.initialTop - dy) + "px";
130			                    	}
131			                    },
132			                    wipeLeft: settings.direction == "horizontal" ? function(dx) { 
133			                        var ul = carouselObject.$elts.content[0];
134			                    	ul.percentAnim = dx / ul.onesizeWidth; 
135			                    	switch (settings.effect)
136			                    	{
137			                    		case "no":
138			                    			break;
139			                    		case "fade":
140			                    			$(ul).children("li").stop(true, true);
141			                    			$(ul).children("li:eq(" + carouselObject.steps.first + ")").css("opacity", 1 - Math.abs(ul.percentAnim))
142			                    			$(ul).children("li:eq(" + (carouselObject.steps.first + 1) + ")").css('visibility', 'visible').css("opacity", Math.abs(ul.percentAnim))
143			                    			break;
144			                    		case "slidein":
145			                    		default:
146			                    			ul.style.left = Math.max(ul.maxLeft - 50, ul.initialLeft - dx) + "px";
147			                    	}
148			                    } : null,
149			                    wipeRight: settings.direction == "horizontal" ? function(dx) {
150			                        var ul = carouselObject.$elts.content[0];
151			                    	ul.percentAnim = dx / ul.onesizeWidth; 
152			                    	switch (settings.effect)
153			                    	{
154			                    		case "no":
155			                    			break;
156			                    		case "fade":
157			                    			$(ul).children("li").stop(true, true);
158			                    			$(ul).children("li:eq(" + carouselObject.steps.first + ")").css("opacity", 1 - Math.abs(ul.percentAnim))
159			                    			if (carouselObject.steps.first >= 1)
160			                    			{
161			                    				$(ul).children("li:eq(" + (carouselObject.steps.first - 1) + ")").css('visibility', 'visible').css("opacity", Math.abs(ul.percentAnim))
162			                    			}
163			                    			break;
164			                    		case "slidein":
165			                    		default:
166			                    			ul.style.left = Math.min(50, ul.initialLeft - dx) + "px";
167			                    	}
168			                    } : null,
169			                    wipeCancel: function() {
170			                        var ul = carouselObject.$elts.content[0];
171			                    	switch (settings.effect)
172			                    	{
173			                    		case "no":
174			                    			break;
175			                    		case "fade":
176			                    			$(ul).children("li").stop(true, false);
177			                    			$(ul).children("li:eq(" + (carouselObject.steps.first > 0 ? carouselObject.steps.first : 0) + ")").css("opacity", 1);
178			                    			$(ul).children("li:not(:eq(" + (carouselObject.steps.first > 0 ? carouselObject.steps.first : 0) + "))").css('visibility', 'hidden').css("opacity", 0);
179			                    			break;
180			                    		case "slidein":
181			                    		default:
182			                    			ul.style.left = ul.initialLeft;
183			                    	}
184			                    },
185			                    wipeStop: function() {
186			                        var ul = carouselObject.$elts.content[0];
187			                        var active = $(carouselObject.$elts.paginationBtns[0].parentNode).find("a.active");
188			                    	if (ul.percentAnim < 0)
189			                    	{
190		                				var prev = active.prev('a');
191		                				if (prev.length == 0)
192		                				{
193		                					active.click();
194		                				}
195		                				else
196		                				{ 
197		                					prev.click();
198		                				}
199		                			}
200		                			else
201		                			{
202		                				var next = active.next('a');
203		                				if (next.length == 0)
204		                				{
205		                					active.click();
206		                				}
207		                				else
208		                				{ 
209		                					next.click();
210		                				}
211		                			}
212		
213			                    },
214			                    min_move_x: 24,
215			                    min_move_y: 24,
216			                    preventDefaultEvents: true
217			                });
218						}
219						
220						createPagination(carouselObject);
221						if (!carouselObject.params.pagination) {
222							carouselObject.$elts.pagination[0].style.position = "absolute";
223							carouselObject.$elts.pagination[0].style.top = "-10000px";
224							carouselObject.$elts.pagination[0].style.left = "-10000px";
225						}
226						if ($.isFunction(carouselObject.params.prevBtnInsertFn)) 
227						{
228							carouselObject.$elts.prevBtn = carouselObject.params.prevBtnInsertFn(carouselObject.$elts)
229						} 
230						else 
231						{
232							if (settings.btnsPosition == "outside") 
233							{
234								carouselObject.$elts.prevBtn = $('<input type="button" value="' + settings.prevBtnText + '" title="' + settings.prevBtnText + '" />')[settings.prevBtnInsert](carouselObject.$elts.carousel);
235							} 
236							else if (settings.btnsPosition == "pagination")
237							{
238								carouselObject.$elts.prevBtn = $('<input type="button" value="' + settings.prevBtnText + '" title="' + settings.prevBtnText + '" />')[settings.prevBtnInsert](carouselObject.$elts.paginationBtns[0]);
239							}
240							else 
241							{
242								carouselObject.$elts.prevBtn = $('<input type="button" value="' + settings.prevBtnText + '" title="' + settings.prevBtnText + '" />')[settings.prevBtnInsert](carouselObject.$elts.wrap);
243							}
244						}
245						if ($.isFunction(carouselObject.params.nextBtnInsertFn)) 
246						{
247							carouselObject.$elts.nextBtn = carouselObject.params.nextBtnInsertFn(carouselObject.$elts);
248						} 
249						else 
250						{
251							if (settings.btnsPosition == "outside") 
252							{
253								carouselObject.$elts.nextBtn = $('<input type="button" value="' + settings.nextBtnText  + '" title="' + settings.nextBtnText  + '" />')[settings.nextBtnInsert](carouselObject.$elts.carousel);
254							} 
255							else if (settings.btnsPosition == "pagination")
256							{
257								carouselObject.$elts.nextBtn = $('<input type="button" value="' + settings.nextBtnText  + '" title="' + settings.nextBtnText  + '" />')[settings.nextBtnInsert](carouselObject.$elts.paginationBtns[carouselObject.$elts.paginationBtns.length - 1]);
258							}
259							else 
260							{
261								carouselObject.$elts.nextBtn = $('<input type="button" value="' + settings.nextBtnText  + '" title="' + settings.nextBtnText  + '" />')[settings.nextBtnInsert](carouselObject.$elts.wrap);
262							}
263						}
264						carouselObject.$elts.nextBtn.addClass("carousel-control next carousel-next");
265						carouselObject.$elts.prevBtn.addClass("carousel-control previous carousel-previous");
266						carouselObject.lastItemsToLoad;
267						
268						initNextPreviousButton(carouselObject);
269						
270						if (carouselObject.params.arrowKey)
271						{
272							var children = carouselObject.$elts.carousel.attr("tabindex", 0).add(carouselObject.$elts.carousel.children());
273							children.bind(
274								{
275									focus : function(s) {
276										$(document).bind("keypress", 
277											function(t) 
278											{
279												switch (t.keyCode) 
280												{
281													case 39:
282														carouselObject.$elts.nextBtn.click();
283														break;
284													case 37:
285														carouselObject.$elts.prevBtn.click();
286														break
287												}
288												switch (t.charCode) 
289												{
290													case 110:
291														carouselObject.$elts.nextBtn.click();
292														break;
293													case 112:
294														carouselObject.$elts.prevBtn.click();
295														break
296												}
297											}
298										);
299									},
300									blur : function() {
301										$(document).unbind("keypress");
302									}
303								}
304							);
305						}
306							
307						initAddress(carouselObject);
308						
309						initialize(carouselObject);
310						
311						$.each(carouselObject.launchOnLoad, 
312							function(index, functionToLoad) 
313							{
314								functionToLoad();
315							}
316						);
317						
318						if (carouselObject.params.autoSlide) 
319						{
320							startAutoSlide(carouselObject);
321						}
322						
323						// stop button
324						if (settings.stopSlideBtn == true) 
325						{
326							carouselObject.$elts.stopSlideBtn = $('<button type="button" class="slide-control play" title="' + settings.stopSlideTextPause + '">' + settings.stopSlideTextPause + "</button>");
327							bindStopButtonActions(carouselObject)
328						}						
329					}
330					
331					function onloadinit()
332					{
333						var liItem = carouselObject.$elts.content.children("li:eq(0)");
334						var imageInFirst = liItem.find("img:eq(0)")[0];
335						var jImageInFirst = $(imageInFirst);
336						
337						if (!imageInFirst || imageInFirst.complete || (imageInFirst.readyState == 'loading' && jImageInFirst.height() > 30))
338						{
339							window.setTimeout(function() { init(); }, 1);
340						}
341						else
342						{
343							jImageInFirst.load(init);
344							jImageInFirst.error(
345								function() 
346								{
347									console && console.info("[Carousel] Cannot load image of the first slide to determine the carousel size: removing it.");
348									carouselObject.$elts.content.children("li:eq(0)").remove();
349									onloadinit();
350								}
351							);
352						}
353					}
354					
355					$(onloadinit);
356					
357					// FOCUS HANDLING
358					var car = $(this);
359					$('a', car).each(function(index, element) {
360	                    $(element).focus(function() {
361	                    	var liindex = $(this).parents("div.carousel-wrap > ul > li").first().prevAll("li").length;
362	                    	
363            				gotoPage(carouselObject, liindex);
364            				if (carouselObject.$elts.stopSlideBtn) 
365            				{
366            					carouselObject.$elts.stopSlideBtn.trigger("pause")
367            				} 
368            				else 
369            				{
370            					stopAutoSlide(carouselObject)
371            				}
372                    		
373                    		var jul = $('.carousel-wrap > ul', car);
374                    		jul.css('opacity', '0').css('position', 'fixed');
375	                		window.setTimeout(function() { jul.css('opacity', '1').css('position', 'absolute'); }, 1);
376	                 
377	                	});
378	                });					
379				})
380	};
381	
382	function initialize(carouselObject) 
383	{
384		var t = carouselObject.$elts.content.children("li");
385		var r = 0;
386		
387		t.each(
388			function() 
389			{
390				$item = $(this);
391				$itemHeight = $item.outerHeight();
392				if ($itemHeight > r) 
393				{
394					r = $itemHeight
395				}
396			}
397		);
398		
399		if (carouselObject.params.verticalMargin > 0) 
400		{
401			r = r + carouselObject.params.verticalMargin;
402		}
403		t.height(r);
404		var q = carouselObject.$elts.content.children(":first");
405		carouselObject.itemWidth = q.outerWidth();
406		
407		switch (carouselObject.params.effect)
408		{
409			case "fade":
410				carouselObject.$elts.content.children("li").css('position', 'absolute');
411				carouselObject.$elts.content.children("li:not(:eq(0))").css('opacity', 0).css('visibility', 'hidden');
412				break;
413		}
414
415		if (carouselObject.params.direction == "vertical") 
416		{
417			carouselObject.contentWidth = carouselObject.itemWidth
418		} 
419		else 
420		{
421			if (carouselObject.params.equalWidths) {
422				carouselObject.contentWidth = carouselObject.itemWidth * carouselObject.steps.count
423			} 
424			else 
425			{
426				carouselObject.contentWidth = (function() {
427					var u = 0;
428					carouselObject.$elts.content.children().each(
429						function() 
430						{
431							u += $(this).outerWidth()
432						}
433					);
434					return u
435				})();
436			}
437		}
438		
439		carouselObject.$elts.content.width(carouselObject.contentWidth);
440		carouselObject.itemHeight = r;
441		
442		if (carouselObject.params.direction == "vertical") 
443		{
444			carouselObject.$elts.content.css({ height : carouselObject.itemHeight * carouselObject.steps.count + "px" });
445			carouselObject.$elts.content.parent().css({ height : carouselObject.itemHeight * carouselObject.params.dispItems + "px" });
446		} 
447		else 
448		{
449			carouselObject.$elts.content.parent().css({ height : carouselObject.itemHeight + "px" });
450		}
451		updatePaginationButtons(carouselObject);
452	}
453	
454	function initNextPreviousButton(carouselObject) {
455		var button = carouselObject.$elts.nextBtn.add(carouselObject.$elts.prevBtn);
456		button.bind("enable", function() {
457					var jButton = $(this);
458					jButton.unbind("click");
459					jButton.bind("click", function() {
460								if (carouselObject.params.ajaxMode && jButton.is(".next")
461										&& getCurrentPaginationPosition(carouselObject) == (getPaginationSize(carouselObject) - 1)
462										&& !carouselObject.lastItemsToLoad) 
463								{
464									ajaxLoad(carouselObject);
465									carouselObject.$elts.content.ajaxSuccess(function() { });
466								} 
467								else 
468								{
469									gotoPage(carouselObject, countItems(carouselObject, (jButton.is(".next") ? "next" : "prev")));
470									if (carouselObject.params.stopSlideBtn == true) 
471									{
472										carouselObject.$elts.stopSlideBtn.trigger("pause");
473									} 
474									else 
475									{
476										stopAutoSlide(carouselObject);
477									}
478								}
479					});
480					jButton.removeClass("disabled").removeAttr("disabled");
481					
482					if (carouselObject.params.combinedClasses) 
483					{
484						jButton.removeClass("next-disabled previous-disabled");
485						jButton.removeAttr("disabled")
486					}
487				});
488				
489		button.bind("disable", 
490					function() 
491					{
492						var jButton = $(this);
493						jButton.unbind("click");
494						jButton.addClass("disabled");
495						jButton.attr("disabled", "disabled");
496						
497						if (carouselObject.params.combinedClasses) 
498						{
499							if (jButton.is(".next")) 
500							{
501								jButton.addClass("next-disabled")
502							} 
503							else 
504							{
505								if (jButton.is(".previous")) 
506								{
507									jButton.addClass("previous-disabled");
508								}
509							}
510						}
511					}
512		);
513				
514		button.hover(
515				function() 
516				{
517					$(this).toggleClass("hover");
518				}
519		);
520	}
521	function createPagination(carouselObject) 
522	{
523		var position = ((carouselObject.params.paginationPosition == "outside") ? "insertAfter" : "appendTo");
524		
525		carouselObject.$elts.pagination = $('<div class="center-wrap"><div class="carousel-pagination"><p></p></div></div>')[position](carouselObject.$elts.carousel).find("p");
526		carouselObject.$elts.paginationBtns = $([]);
527		carouselObject.$elts.content.children("li").each(function(liIndex) {
528			if (liIndex % carouselObject.params.dispItems == 0) {
529				createPaginationButton(carouselObject, liIndex)
530			}
531		})
532	}
533	function createPaginationButton(carouselObject, liIndex) 
534	{
535		var link = $('<a ' + (carouselObject.params.setInternalAttribute ? 'internal="internal" ' : '')
536				+ 'href="#" role="button"><span>'
537				+ carouselObject.params.tabLabel(carouselObject.$elts.paginationBtns.length + 1)
538				+ "</span></a>").data("firstStep", liIndex);
539		
540		carouselObject.$elts.paginationBtns = carouselObject.$elts.paginationBtns.add(link);
541		carouselObject.$elts.paginationBtns.appendTo(carouselObject.$elts.pagination);
542		carouselObject.$elts.paginationBtns.slice(0, 1).addClass("active");
543		carouselObject.$elts.paginationBtns.click(
544			function(s) 
545			{
546				gotoPage(carouselObject, $(this).data("firstStep"));
547				if (carouselObject.params.stopSlideBtn == true) 
548				{
549					carouselObject.$elts.stopSlideBtn.trigger("pause")
550				} 
551				else 
552				{
553					stopAutoSlide(carouselObject)
554				}
555				return false;
556			}
557		);
558	}
559	function initAddress(carouselObject) 
560	{
561		if (carouselObject.params.useAddress && $.isFunction($.fn.address)) 
562		{
563			$.address.init(
564				function(s) 
565				{
566					var r = $.address.pathNames();
567					if (r[0] === carouselObject.params.adressIdentifier && !!r[1]) 
568					{
569						gotoPage(carouselObject, r[1] - 1);
570					} 
571					else 
572					{
573						$.address.value("/" + carouselObject.params.adressIdentifier + "/1");
574					}
575				}
576			).change(
577				function(s) 
578				{
579					var r = $.address.pathNames();
580					if (r[0] === carouselObject.params.adressIdentifier && !!r[1]) 
581					{
582						gotoPage(carouselObject, r[1] - 1);
583					}
584				}
585			);
586		} 
587		else 
588		{
589			carouselObject.params.useAddress = false;
590		}
591	}
592	
593	function gotoPage(carouselObject, pageIndex) 
594	{
595		carouselObject.params.callback(pageIndex);
596		
597		showPage(carouselObject, pageIndex);
598		
599		carouselObject.steps.first = pageIndex;
600		
601		updatePaginationButtons(carouselObject);
602		
603		if (carouselObject.params.useAddress) 
604		{
605			$.address.value("/" + carouselObject.params.adressIdentifier + "/" + (pageIndex + 1));
606		}
607	}
608	
609	function countItems(carouselObject, command) 
610	{
611		if (command == "prev") 
612		{
613			if (!carouselObject.params.showEmptyItems) 
614			{
615				if (carouselObject.steps.first == 0) 
616				{
617					return ((carouselObject.params.loop) ? (carouselObject.steps.count - carouselObject.params.dispItems) : false);
618				} 
619				else 
620				{
621					return Math.max(0, carouselObject.steps.first - carouselObject.params.dispItems);
622				}
623			} 
624			else 
625			{
626				if ((carouselObject.steps.first - carouselObject.params.dispItems) >= 0) 
627				{
628					return carouselObject.steps.first - carouselObject.params.dispItems;
629				} 
630				else 
631				{
632					return ((carouselObject.params.loop) ? (carouselObject.steps.count - carouselObject.params.dispItems) : false);
633				}
634			}
635		} 
636		else if (command == "next") 
637		{
638			if ((carouselObject.steps.first + carouselObject.params.dispItems) < carouselObject.steps.count) 
639			{
640				if (!carouselObject.params.showEmptyItems) 
641				{
642					return Math.min(carouselObject.steps.first + carouselObject.params.dispItems, carouselObject.steps.count - carouselObject.params.dispItems)
643				} 
644				else 
645				{
646					return carouselObject.steps.first + carouselObject.params.dispItems
647				}
648			} 
649			else 
650			{
651				return ((carouselObject.params.loop) ? 0 : false)
652			}
653		}
654	}
655	
656	function showPage(carouselObject, pageIndex) 
657	{
658		switch (carouselObject.params.effect) 
659		{
660			case "no":
661				if (carouselObject.params.direction == "vertical") 
662				{
663					carouselObject.$elts.content.css("top", -(carouselObject.itemHeight * pageIndex) + "px");
664				} 
665				else 
666				{
667					carouselObject.$elts.content.css("left", -(carouselObject.itemWidth * pageIndex) + "px");
668				}
669				break;
670				
671			case "fade":
672				carouselObject.$elts.content.children("li").stop(true, false);
673				carouselObject.$elts.content.children("li:not(:eq(" + (pageIndex+0) + "))").fadeTo(carouselObject.params.animSpeed, 0, function() { $(this).css('visibility', 'hidden'); });
674				carouselObject.$elts.content.children("li:eq(" + (pageIndex+0) + ")").css('visibility', 'visible').fadeTo(carouselObject.params.animSpeed, 1);
675				break;
676				
677			case "slide": 
678			default:
679				if (carouselObject.params.direction == "vertical") 
680				{
681					carouselObject.$elts.content.stop().animate({ top : -(carouselObject.itemHeight * pageIndex) + "px" }, carouselObject.params.animSpeed, carouselObject.params.slideEasing);
682				} 
683				else 
684				{
685					carouselObject.$elts.content.stop().animate({ left : -(carouselObject.itemWidth * pageIndex) + "px" }, carouselObject.params.animSpeed, carouselObject.params.slideEasing);
686				}
687				break;
688		}
689	}
690	
691	function updatePaginationButtons(carouselObject) 
692	{
693		if (countItems(carouselObject, "prev") !== false) 
694		{
695			carouselObject.$elts.prevBtn.trigger("enable");
696		} 
697		else 
698		{
699			carouselObject.$elts.prevBtn.trigger("disable");
700		}
701		
702		if (countItems(carouselObject, "next") !== false) 
703		{
704			carouselObject.$elts.nextBtn.trigger("enable");
705		} 
706		else 
707		{
708			carouselObject.$elts.nextBtn.trigger("disable");
709		}
710
711		function filterFunction() 
712		{
713			return ($(this).data("firstStep") == carouselObject.steps.first);
714		}
715		carouselObject.$elts.paginationBtns.removeClass("active").filter(filterFunction).addClass("active");
716	}
717	
718	function startAutoSlide(carouselObject) 
719	{
720		carouselObject.delayAutoSlide = window.setTimeout(
721			function() 
722			{
723				carouselObject.autoSlideInterval = window.setInterval(
724						function() 
725						{
726							gotoPage(carouselObject, countItems(carouselObject, "next"))
727						}, 
728						carouselObject.params.autoSlideInterval
729				);
730			}, 
731			carouselObject.params.delayAutoSlide
732		);
733	}
734	
735	function stopAutoSlide(carouselObject) 
736	{
737		window.clearTimeout(carouselObject.delayAutoSlide);
738		window.clearInterval(carouselObject.autoSlideInterval);
739		carouselObject.params.delayAutoSlide = 0
740	}
741	
742	function bindStopButtonActions(carouselObject) 
743	{
744		var actionButton = carouselObject.$elts.stopSlideBtn;
745		actionButton.bind(
746			{
747				play : function() 
748						{
749							startAutoSlide(carouselObject);
750							actionButton.removeClass("pause");
751							actionButton.addClass("play");
752							actionButton.html(carouselObject.params.stopSlideTextPause);
753							actionButton.attr('title', carouselObject.params.stopSlideTextPause);
754						},
755				pause : function() 
756						{
757							stopAutoSlide(carouselObject);
758							actionButton.removeClass("play");
759							actionButton.addClass("pause");
760							actionButton.html(carouselObject.params.stopSlideTextPlay);
761							actionButton.attr('title', carouselObject.params.stopSlideTextPlay);
762						}
763			}
764		);
765		
766		actionButton.click(
767				function(event) 
768				{
769					if (actionButton.is(".play")) 
770					{
771						actionButton.trigger("pause");
772					} 
773					else 
774					{
775						if (actionButton.is(".pause")) 
776						{
777							actionButton.trigger("play");
778						}
779					}
780				}
781		);
782		actionButton.prependTo(carouselObject.$elts.pagination);
783	}
784	
785	function getPaginationSize(carouselObject) 
786	{
787		return carouselObject.$elts.pagination.children().length
788	}
789	
790	function getCurrentPaginationPosition(carouselObject) 
791	{
792		return carouselObject.steps.first / carouselObject.params.dispItems;
793	}
794	
795	function ajaxLoad(carouselObject) 
796	{
797		carouselObject.$elts.carousel.prepend(carouselObject.$elts.loader);
798		$.ajax({
799			url : carouselObject.params.ajaxUrl,
800			dataType : "json",
801			success : function(response) {
802				carouselObject.lastItemsToLoad = response.bLastItemsToLoad;
803				$(carouselObject.$elts.content).append(response.shtml);
804				carouselObject.steps = {
805					first : carouselObject.steps.first + carouselObject.params.dispItems,
806					count : carouselObject.$elts.content.children().length
807				};
808				carouselObject.steps.last = carouselObject.steps.count - 1;
809				initialize(carouselObject);
810				createPaginationButton(carouselObject, carouselObject.steps.first);
811				gotoPage(carouselObject, carouselObject.steps.first);
812				if (carouselObject.params.stopSlideBtn == true) 
813				{
814					carouselObject.$elts.stopSlideBtn.trigger("pause")
815				} 
816				else 
817				{
818					stopAutoSlide(carouselObject)
819				}
820				carouselObject.$elts.loader.remove()
821			}
822		})
823	}
824})(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.