/* jQuery Carousel 0.9.8
Copyright 2010 Thomas Lanciaux and Pierre Bertet.
This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/
(function (g) { g.fn.carousel = function (q) { var q = g.extend({ direction: "horizontal", loop: false, dispItems: 1, pagination: false, paginationPosition: "inside", nextBtn: '<input type="button" value="Next" />', prevBtn: '<input type="button" value="Previous" />', btnsPosition: "inside", nextBtnInsert: "insertAfter", prevBtnInsert: "insertBefore", nextBtnInsertFn: false, prevBtnInsertFn: false, autoSlide: false, autoSlideInterval: 3000, delayAutoSlide: false, combinedClasses: false, effect: "slide", slideEasing: "swing", animSpeed: 300, equalWidths: "true", verticalMargin: 0, callback: function () { }, useAddress: false, adressIdentifier: "carousel", tabLabel: function (r) { return r }, showEmptyItems: true, ajaxMode: false, ajaxUrl: "", stopSlideBtn: false, stopSlideTextPause: "Pause", stopSlideTextPlay: "Play" }, q); if (q.btnsPosition == "outside") { q.prevBtnInsert = "insertBefore"; q.nextBtnInsert = "insertAfter" } q.delayAutoSlide = 0 + q.delayAutoSlide; return this.each(function () { var r = { $elts: {}, params: q, launchOnLoad: [] }; r.$elts.carousel = g(this).addClass("js"); r.$elts.content = g(this).children().css({ position: "absolute", top: 0 }); r.$elts.wrap = r.$elts.content.wrap('<div class="carousel-wrap"></div>').parent().css({ overflow: "hidden", position: "relative" }); r.steps = { first: 0, count: r.$elts.content.children().length }; r.$elts.loader = g('<div class="loader"></div>').css({ position: "absolute" }); r.steps.last = r.steps.count - 1; if (r.params.pagination) { o(r) } if (g.isFunction(r.params.prevBtnInsertFn)) { r.$elts.prevBtn = r.params.prevBtnInsertFn(r.$elts) } else { if (q.btnsPosition == "outside") { r.$elts.prevBtn = g(q.prevBtn)[q.prevBtnInsert](r.$elts.carousel) } else { r.$elts.prevBtn = g(q.prevBtn)[q.prevBtnInsert](r.$elts.wrap) } } if (g.isFunction(r.params.nextBtnInsertFn)) { r.$elts.nextBtn = r.params.nextBtnInsertFn(r.$elts) } else { if (q.btnsPosition == "outside") { r.$elts.nextBtn = g(q.nextBtn)[q.nextBtnInsert](r.$elts.carousel) } else { r.$elts.nextBtn = g(q.nextBtn)[q.nextBtnInsert](r.$elts.wrap) } } r.$elts.nextBtn.addClass("carousel-control next carousel-next"); r.$elts.prevBtn.addClass("carousel-control previous carousel-previous"); r.lastItemsToLoad; d(r); r.$elts.carousel.attr("tabindex", 0).add(r.$elts.carousel.children()).bind({ focus: function (s) { g(document).bind("keypress", function (t) { switch (t.keyCode) { case 39: r.$elts.nextBtn.click(); break; case 37: r.$elts.prevBtn.click(); break } switch (t.charCode) { case 110: r.$elts.nextBtn.click(); break; case 112: r.$elts.prevBtn.click(); break } }) }, blur: function () { g(document).unbind("keypress") } }); n(r); g(function () { c(r); g.each(r.launchOnLoad, function (s, t) { t() }); if (r.params.autoSlide) { f(r) } if (q.stopSlideBtn == true) { r.$elts.stopSlideBtn = g('<button type="button" class="slide-control play">' + q.stopSlideTextPause + "</button>"); a(r) } }) }) }; function c(s) { var t = s.$elts.content.children(); var r = 0; t.each(function () { $item = g(this); $itemHeight = $item.outerHeight(); if ($itemHeight > r) { r = $itemHeight } }); if (s.params.verticalMargin > 0) { r = r + s.params.verticalMargin } t.height(r); var q = s.$elts.content.children(":first"); s.itemWidth = q.outerWidth(); if (s.params.direction == "vertical") { s.contentWidth = s.itemWidth } else { if (s.params.equalWidths) { s.contentWidth = s.itemWidth * s.steps.count } else { s.contentWidth = (function () { var u = 0; s.$elts.content.children().each(function () { u += g(this).outerWidth() }); return u })() } } s.$elts.content.width(s.contentWidth); s.itemHeight = r; if (s.params.direction == "vertical") { s.$elts.content.css({ height: s.itemHeight * s.steps.count + "px" }); s.$elts.content.parent().css({ height: s.itemHeight * s.params.dispItems + "px" }) } else { s.$elts.content.parent().css({ height: s.itemHeight + "px" }) } i(s) } function d(q) { q.$elts.nextBtn.add(q.$elts.prevBtn).bind("enable", function () { var r = g(this).unbind("click").bind("click", function () { if (q.params.ajaxMode && r.is(".next") && b(q) == (p(q) - 1) && !q.lastItemsToLoad) { h(q); q.$elts.content.ajaxSuccess(function () { }) } else { e(q, j(q, (r.is(".next") ? "next" : "prev"))); if (q.params.stopSlideBtn == true) { q.$elts.stopSlideBtn.trigger("pause") } else { m(q) } } }).removeClass("disabled").removeAttr("disabled"); if (q.params.combinedClasses) { r.removeClass("next-disabled previous-disabled").removeAttr("disabled") } }).bind("disable", function () { var r = g(this).unbind("click").addClass("disabled").attr("disabled", "disabled"); if (q.params.combinedClasses) { if (r.is(".next")) { r.addClass("next-disabled") } else { if (r.is(".previous")) { r.addClass("previous-disabled") } } } }).hover(function () { g(this).toggleClass("hover") }) } function o(q) { q.$elts.pagination = g('<div class="center-wrap"><div class="carousel-pagination"><p></p></div></div>')[((q.params.paginationPosition == "outside") ? "insertAfter" : "appendTo")](q.$elts.carousel).find("p"); q.$elts.paginationBtns = g([]); q.$elts.content.find("li").each(function (r) { if (r % q.params.dispItems == 0) { k(q, r) } }) } function k(r, q) { if (r.params.pagination) { r.$elts.paginationBtns = r.$elts.paginationBtns.add(g('<a role="button"><span>' + r.params.tabLabel(r.$elts.paginationBtns.length + 1) + "</span></a>").data("firstStep", q)).appendTo(r.$elts.pagination); r.$elts.paginationBtns.slice(0, 1).addClass("active"); r.$elts.paginationBtns.click(function (s) { e(r, g(this).data("firstStep")); if (r.params.stopSlideBtn == true) { r.$elts.stopSlideBtn.trigger("pause") } else { m(r) } }) } } function n(q) { if (q.params.useAddress && g.isFunction(g.fn.address)) { g.address.init(function (s) { var r = g.address.pathNames(); if (r[0] === q.params.adressIdentifier && !!r[1]) { e(q, r[1] - 1) } else { g.address.value("/" + q.params.adressIdentifier + "/1") } }).change(function (s) { var r = g.address.pathNames(); if (r[0] === q.params.adressIdentifier && !!r[1]) { e(q, r[1] - 1) } }) } else { q.params.useAddress = false } } function e(q, r) { q.params.callback(r); l(q, r); q.steps.first = r; i(q); if (q.params.useAddress) { g.address.value("/" + q.params.adressIdentifier + "/" + (r + 1)) } } function j(r, q) { if (q == "prev") { if (!r.params.showEmptyItems) { if (r.steps.first == 0) { return ((r.params.loop) ? (r.steps.count - r.params.dispItems) : false) } else { return Math.max(0, r.steps.first - r.params.dispItems) } } else { if ((r.steps.first - r.params.dispItems) >= 0) { return r.steps.first - r.params.dispItems } else { return ((r.params.loop) ? (r.steps.count - r.params.dispItems) : false) } } } else { if (q == "next") { if ((r.steps.first + r.params.dispItems) < r.steps.count) { if (!r.params.showEmptyItems) { return Math.min(r.steps.first + r.params.dispItems, r.steps.count - r.params.dispItems) } else { return r.steps.first + r.params.dispItems } } else { return ((r.params.loop) ? 0 : false) } } } } function l(q, r) { switch (q.params.effect) { case "no": if (q.params.direction == "vertical") { q.$elts.content.css("top", -(q.itemHeight * r) + "px") } else { q.$elts.content.css("left", -(q.itemWidth * r) + "px") } break; case "fade": if (q.params.direction == "vertical") { q.$elts.content.hide().css("top", -(q.itemHeight * r) + "px").fadeIn(q.params.animSpeed) } else { q.$elts.content.hide().css("left", -(q.itemWidth * r) + "px").fadeIn(q.params.animSpeed) } break; default: if (q.params.direction == "vertical") { q.$elts.content.stop().animate({ top: -(q.itemHeight * r) + "px" }, q.params.animSpeed, q.params.slideEasing) } else { q.$elts.content.stop().animate({ left: -(q.itemWidth * r) + "px" }, q.params.animSpeed, q.params.slideEasing) } break } } function i(q) { if (j(q, "prev") !== false) { q.$elts.prevBtn.trigger("enable") } else { q.$elts.prevBtn.trigger("disable") } if (j(q, "next") !== false) { q.$elts.nextBtn.trigger("enable") } else { q.$elts.nextBtn.trigger("disable") } if (q.params.pagination) { q.$elts.paginationBtns.removeClass("active").filter(function () { return (g(this).data("firstStep") == q.steps.first) }).addClass("active") } } function f(q) { q.delayAutoSlide = window.setTimeout(function () { q.autoSlideInterval = window.setInterval(function () { e(q, j(q, "next")) }, q.params.autoSlideInterval) }, q.params.delayAutoSlide) } function m(q) { window.clearTimeout(q.delayAutoSlide); window.clearInterval(q.autoSlideInterval); q.params.delayAutoSlide = 0 } function a(r) { var q = r.$elts.stopSlideBtn; q.bind({ play: function () { f(r); q.removeClass("pause").addClass("play").html(r.params.stopSlideTextPause) }, pause: function () { m(r); q.removeClass("play").addClass("pause").html(r.params.stopSlideTextPlay) } }); q.click(function (s) { if (q.is(".play")) { q.trigger("pause") } else { if (q.is(".pause")) { q.trigger("play") } } }); q.prependTo(r.$elts.wrap) } function p(q) { return q.$elts.pagination.children().length } function b(q) { return q.steps.first / q.params.dispItems } function h(q) { q.$elts.carousel.prepend(q.$elts.loader); g.ajax({ url: q.params.ajaxUrl, dataType: "json", success: function (r) { q.lastItemsToLoad = r.bLastItemsToLoad; g(q.$elts.content).append(r.shtml); q.steps = { first: q.steps.first + q.params.dispItems, count: q.$elts.content.children().length }; q.steps.last = q.steps.count - 1; c(q); k(q, q.steps.first); e(q, q.steps.first); if (q.params.stopSlideBtn == true) { q.$elts.stopSlideBtn.trigger("pause") } else { m(q) } q.$elts.loader.remove() } }) } })(jQuery);
