PageSourceSearch

https://www.inp-toulouse.fr/skins/inp-new/resources/js/jquery.carousel.min.js

js inp-toulouse.fr collected 2026-10-01 11:28:25 UTC 26,984 bytes, 815 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                        carouselObject.$elts.content.imagesLoaded()
334                            .done(function() {
335                                init();
336                            })
337                            .fail(function() {
338                                if (window.console)
339                                {
340                                    console.log('all images loaded, at least one is broken');
341                                }
342                                init();
343                            });
344					}
345					
346					$(onloadinit);
347					
348					// FOCUS HANDLING
349					var car = $(this);
350					$('a', car).each(function(index, element) {
351	                    $(element).focus(function() {
352	                    	var liindex = $(this).parents("div.carousel-wrap > ul > li").first().prevAll("li").length;
353	                    	
354            				gotoPage(carouselObject, liindex);
355            				if (carouselObject.$elts.stopSlideBtn) 
356            				{
357            					carouselObject.$elts.stopSlideBtn.trigger("pause")
358            				} 
359            				else 
360            				{
361            					stopAutoSlide(carouselObject)
362            				}
363                    		
364                    		var jul = $('.carousel-wrap > ul', car);
365                    		jul.css('opacity', '0').css('position', 'fixed');
366	                		window.setTimeout(function() { jul.css('opacity', '1').css('position', 'absolute'); }, 1);
367	                 
368	                	});
369	                });					
370				})
371	};
372	
373	function initialize(carouselObject) 
374	{
375		var t = carouselObject.$elts.content.children("li");
376		var r = 0;
377		
378		t.each(
379			function() 
380			{
381				$item = $(this);
382				$itemHeight = $item.outerHeight();
383				if ($itemHeight > r) 
384				{
385					r = $itemHeight
386				}
387			}
388		);
389		
390		if (carouselObject.params.verticalMargin > 0) 
391		{
392			r = r + carouselObject.params.verticalMargin;
393		}
394		t.height(r);
395		var q = carouselObject.$elts.content.children(":first");
396		carouselObject.itemWidth = q.outerWidth();
397		
398		switch (carouselObject.params.effect)
399		{
400			case "fade":
401				carouselObject.$elts.content.children("li").css('position', 'absolute');
402				carouselObject.$elts.content.children("li:not(:eq(0))").css('opacity', 0).css('visibility', 'hidden');
403				break;
404		}
405
406		if (carouselObject.params.direction == "vertical") 
407		{
408			carouselObject.contentWidth = carouselObject.itemWidth
409		} 
410		else 
411		{
412			if (carouselObject.params.equalWidths) {
413				carouselObject.contentWidth = carouselObject.itemWidth * carouselObject.steps.count
414			} 
415			else 
416			{
417				carouselObject.contentWidth = (function() {
418					var u = 0;
419					carouselObject.$elts.content.children().each(
420						function() 
421						{
422							u += $(this).outerWidth()
423						}
424					);
425					return u
426				})();
427			}
428		}
429		
430		carouselObject.$elts.content.width(carouselObject.contentWidth);
431		carouselObject.itemHeight = r;
432		
433		if (carouselObject.params.direction == "vertical") 
434		{
435			carouselObject.$elts.content.css({ height : carouselObject.itemHeight * carouselObject.steps.count + "px" });
436			carouselObject.$elts.content.parent().css({ height : carouselObject.itemHeight * carouselObject.params.dispItems + "px" });
437		} 
438		else 
439		{
440			carouselObject.$elts.content.parent().css({ height : carouselObject.itemHeight + "px" });
441		}
442		updatePaginationButtons(carouselObject);
443	}
444	
445	function initNextPreviousButton(carouselObject) {
446		var button = carouselObject.$elts.nextBtn.add(carouselObject.$elts.prevBtn);
447		button.bind("enable", function() {
448					var jButton = $(this);
449					jButton.unbind("click");
450					jButton.bind("click", function() {
451								if (carouselObject.params.ajaxMode && jButton.is(".next")
452										&& getCurrentPaginationPosition(carouselObject) == (getPaginationSize(carouselObject) - 1)
453										&& !carouselObject.lastItemsToLoad) 
454								{
455									ajaxLoad(carouselObject);
456									carouselObject.$elts.content.ajaxSuccess(function() { });
457								} 
458								else 
459								{
460									gotoPage(carouselObject, countItems(carouselObject, (jButton.is(".next") ? "next" : "prev")));
461									if (carouselObject.params.stopSlideBtn == true) 
462									{
463										carouselObject.$elts.stopSlideBtn.trigger("pause");
464									} 
465									else 
466									{
467										stopAutoSlide(carouselObject);
468									}
469								}
470					});
471					jButton.removeClass("disabled").removeAttr("disabled");
472					
473					if (carouselObject.params.combinedClasses) 
474					{
475						jButton.removeClass("next-disabled previous-disabled");
476						jButton.removeAttr("disabled")
477					}
478				});
479				
480		button.bind("disable", 
481					function() 
482					{
483						var jButton = $(this);
484						jButton.unbind("click");
485						jButton.addClass("disabled");
486						jButton.attr("disabled", "disabled");
487						
488						if (carouselObject.params.combinedClasses) 
489						{
490							if (jButton.is(".next")) 
491							{
492								jButton.addClass("next-disabled")
493							} 
494							else 
495							{
496								if (jButton.is(".previous")) 
497								{
498									jButton.addClass("previous-disabled");
499								}
500							}
501						}
502					}
503		);
504				
505		button.hover(
506				function() 
507				{
508					$(this).toggleClass("hover");
509				}
510		);
511	}
512	function createPagination(carouselObject) 
513	{
514		var position = ((carouselObject.params.paginationPosition == "outside") ? "insertAfter" : "appendTo");
515		
516		carouselObject.$elts.pagination = $('<div class="center-wrap"><div class="carousel-pagination"><p></p></div></div>')[position](carouselObject.$elts.carousel).find("p");
517		carouselObject.$elts.paginationBtns = $([]);
518		carouselObject.$elts.content.children("li").each(function(liIndex) {
519			if (liIndex % carouselObject.params.dispItems == 0) {
520				createPaginationButton(carouselObject, liIndex)
521			}
522		})
523	}
524	function createPaginationButton(carouselObject, liIndex) 
525	{
526		var link = $('<a ' + (carouselObject.params.setInternalAttribute ? 'internal="internal" ' : '')
527				+ 'href="#" role="button"><span>'
528				+ carouselObject.params.tabLabel(carouselObject.$elts.paginationBtns.length + 1)
529				+ "</span></a>").data("firstStep", liIndex);
530		
531		carouselObject.$elts.paginationBtns = carouselObject.$elts.paginationBtns.add(link);
532		carouselObject.$elts.paginationBtns.appendTo(carouselObject.$elts.pagination);
533		carouselObject.$elts.paginationBtns.slice(0, 1).addClass("active");
534		carouselObject.$elts.paginationBtns.click(
535			function(s) 
536			{
537				gotoPage(carouselObject, $(this).data("firstStep"));
538				if (carouselObject.params.stopSlideBtn == true) 
539				{
540					carouselObject.$elts.stopSlideBtn.trigger("pause")
541				} 
542				else 
543				{
544					stopAutoSlide(carouselObject)
545				}
546				return false;
547			}
548		);
549	}
550	function initAddress(carouselObject) 
551	{
552		if (carouselObject.params.useAddress && $.isFunction($.fn.address)) 
553		{
554			$.address.init(
555				function(s) 
556				{
557					var r = $.address.pathNames();
558					if (r[0] === carouselObject.params.adressIdentifier && !!r[1]) 
559					{
560						gotoPage(carouselObject, r[1] - 1);
561					} 
562					else 
563					{
564						$.address.value("/" + carouselObject.params.adressIdentifier + "/1");
565					}
566				}
567			).change(
568				function(s) 
569				{
570					var r = $.address.pathNames();
571					if (r[0] === carouselObject.params.adressIdentifier && !!r[1]) 
572					{
573						gotoPage(carouselObject, r[1] - 1);
574					}
575				}
576			);
577		} 
578		else 
579		{
580			carouselObject.params.useAddress = false;
581		}
582	}
583	
584	function gotoPage(carouselObject, pageIndex) 
585	{
586		carouselObject.params.callback(pageIndex);
587		
588		showPage(carouselObject, pageIndex);
589		
590		carouselObject.steps.first = pageIndex;
591		
592		updatePaginationButtons(carouselObject);
593		
594		if (carouselObject.params.useAddress) 
595		{
596			$.address.value("/" + carouselObject.params.adressIdentifier + "/" + (pageIndex + 1));
597		}
598	}
599	
600	function countItems(carouselObject, command) 
601	{
602		if (command == "prev") 
603		{
604			if (!carouselObject.params.showEmptyItems) 
605			{
606				if (carouselObject.steps.first == 0) 
607				{
608					return ((carouselObject.params.loop) ? (carouselObject.steps.count - carouselObject.params.dispItems) : false);
609				} 
610				else 
611				{
612					return Math.max(0, carouselObject.steps.first - carouselObject.params.dispItems);
613				}
614			} 
615			else 
616			{
617				if ((carouselObject.steps.first - carouselObject.params.dispItems) >= 0) 
618				{
619					return carouselObject.steps.first - carouselObject.params.dispItems;
620				} 
621				else 
622				{
623					return ((carouselObject.params.loop) ? (carouselObject.steps.count - carouselObject.params.dispItems) : false);
624				}
625			}
626		} 
627		else if (command == "next") 
628		{
629			if ((carouselObject.steps.first + carouselObject.params.dispItems) < carouselObject.steps.count) 
630			{
631				if (!carouselObject.params.showEmptyItems) 
632				{
633					return Math.min(carouselObject.steps.first + carouselObject.params.dispItems, c
633arouselObject.steps.count - carouselObject.params.dispItems)
634				} 
635				else 
636				{
637					return carouselObject.steps.first + carouselObject.params.dispItems
638				}
639			} 
640			else 
641			{
642				return ((carouselObject.params.loop) ? 0 : false)
643			}
644		}
645	}
646	
647	function showPage(carouselObject, pageIndex) 
648	{
649		switch (carouselObject.params.effect) 
650		{
651			case "no":
652				if (carouselObject.params.direction == "vertical") 
653				{
654					carouselObject.$elts.content.css("top", -(carouselObject.itemHeight * pageIndex) + "px");
655				} 
656				else 
657				{
658					carouselObject.$elts.content.css("left", -(carouselObject.itemWidth * pageIndex) + "px");
659				}
660				break;
661				
662			case "fade":
663				carouselObject.$elts.content.children("li").stop(true, false);
664				carouselObject.$elts.content.children("li:not(:eq(" + (pageIndex+0) + "))").fadeTo(carouselObject.params.animSpeed, 0, function() { $(this).css('visibility', 'hidden'); });
665				carouselObject.$elts.content.children("li:eq(" + (pageIndex+0) + ")").css('visibility', 'visible').fadeTo(carouselObject.params.animSpeed, 1);
666				break;
667				
668			case "slide": 
669			default:
670				if (carouselObject.params.direction == "vertical") 
671				{
672					carouselObject.$elts.content.stop().animate({ top : -(carouselObject.itemHeight * pageIndex) + "px" }, carouselObject.params.animSpeed, carouselObject.params.slideEasing);
673				} 
674				else 
675				{
676					carouselObject.$elts.content.stop().animate({ left : -(carouselObject.itemWidth * pageIndex) + "px" }, carouselObject.params.animSpeed, carouselObject.params.slideEasing);
677				}
678				break;
679		}
680	}
681	
682	function updatePaginationButtons(carouselObject) 
683	{
684		if (countItems(carouselObject, "prev") !== false) 
685		{
686			carouselObject.$elts.prevBtn.trigger("enable");
687		} 
688		else 
689		{
690			carouselObject.$elts.prevBtn.trigger("disable");
691		}
692		
693		if (countItems(carouselObject, "next") !== false) 
694		{
695			carouselObject.$elts.nextBtn.trigger("enable");
696		} 
697		else 
698		{
699			carouselObject.$elts.nextBtn.trigger("disable");
700		}
701
702		function filterFunction() 
703		{
704			return ($(this).data("firstStep") == carouselObject.steps.first);
705		}
706		carouselObject.$elts.paginationBtns.removeClass("active").filter(filterFunction).addClass("active");
707	}
708	
709	function startAutoSlide(carouselObject) 
710	{
711		carouselObject.delayAutoSlide = window.setTimeout(
712			function() 
713			{
714				carouselObject.autoSlideInterval = window.setInterval(
715						function() 
716						{
717							gotoPage(carouselObject, countItems(carouselObject, "next"))
718						}, 
719						carouselObject.params.autoSlideInterval
720				);
721			}, 
722			carouselObject.params.delayAutoSlide
723		);
724	}
725	
726	function stopAutoSlide(carouselObject) 
727	{
728		window.clearTimeout(carouselObject.delayAutoSlide);
729		window.clearInterval(carouselObject.autoSlideInterval);
730		carouselObject.params.delayAutoSlide = 0
731	}
732	
733	function bindStopButtonActions(carouselObject) 
734	{
735		var actionButton = carouselObject.$elts.stopSlideBtn;
736		actionButton.bind(
737			{
738				play : function() 
739						{
740							startAutoSlide(carouselObject);
741							actionButton.removeClass("pause");
742							actionButton.addClass("play");
743							actionButton.html(carouselObject.params.stopSlideTextPause);
744							actionButton.attr('title', carouselObject.params.stopSlideTextPause);
745						},
746				pause : function() 
747						{
748							stopAutoSlide(carouselObject);
749							actionButton.removeClass("play");
750							actionButton.addClass("pause");
751							actionButton.html(carouselObject.params.stopSlideTextPlay);
752							actionButton.attr('title', carouselObject.params.stopSlideTextPlay);
753						}
754			}
755		);
756		
757		actionButton.click(
758				function(event) 
759				{
760					if (actionButton.is(".play")) 
761					{
762						actionButton.trigger("pause");
763					} 
764					else 
765					{
766						if (actionButton.is(".pause")) 
767						{
768							actionButton.trigger("play");
769						}
770					}
771				}
772		);
773		actionButton.prependTo(carouselObject.$elts.pagination);
774	}
775	
776	function getPaginationSize(carouselObject) 
777	{
778		return carouselObject.$elts.pagination.children().length
779	}
780	
781	function getCurrentPaginationPosition(carouselObject) 
782	{
783		return carouselObject.steps.first / carouselObject.params.dispItems;
784	}
785	
786	function ajaxLoad(carouselObject) 
787	{
788		carouselObject.$elts.carousel.prepend(carouselObject.$elts.loader);
789		$.ajax({
790			url : carouselObject.params.ajaxUrl,
791			dataType : "json",
792			success : function(response) {
793				carouselObject.lastItemsToLoad = response.bLastItemsToLoad;
794				$(carouselObject.$elts.content).append(response.shtml);
795				carouselObject.steps = {
796					first : carouselObject.steps.first + carouselObject.params.dispItems,
797					count : carouselObject.$elts.content.children().length
798				};
799				carouselObject.steps.last = carouselObject.steps.count - 1;
800				initialize(carouselObject);
801				createPaginationButton(carouselObject, carouselObject.steps.first);
802				gotoPage(carouselObject, carouselObject.steps.first);
803				if (carouselObject.params.stopSlideBtn == true) 
804				{
805					carouselObject.$elts.stopSlideBtn.trigger("pause")
806				} 
807				else 
808				{
809					stopAutoSlide(carouselObject)
810				}
811				carouselObject.$elts.loader.remove()
812			}
813		})
814	}
815})(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.