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.