/* jQuery Carousel 0.9.5
Copyright 2008-2009 Thomas Lanciaux and Pierre Bertet.
This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/
(function(c) { c.fn.carousel = function(j) { var j = c.extend({ direction: "horizontal", loop: false, dispItems: 1, pagination: false, paginationPosition: "inside", nextBtn: '<a role="button">Next</a>', prevBtn: '<a role="button">Previous</a>', btnsPosition: "inside", nextBtnInsert: "appendTo", prevBtnInsert: "prependTo", nextBtnInsertFn: false, prevBtnInsertFn: false, autoSlide: false, autoSlideInterval: 3000, delayAutoSlide: false, combinedClasses: false, effect: "slide", slideEasing: "swing", animSpeed: "normal", equalWidths: "true", verticalMargin: 0, callback: function() { }, useAddress: false, adressIdentifier: "carousel", tabLabel: function(k) { return k }, showEmptyItems: true }, j); if (j.btnsPosition == "outside") { j.prevBtnInsert = "insertBefore"; j.nextBtnInsert = "insertAfter" } j.delayAutoSlide = j.delayAutoSlide || j.autoSlideInterval; return this.each(function() { var k = { $elts: {}, params: j, launchOnLoad: [] }; k.$elts.carousel = c(this).addClass("js"); k.$elts.content = c(this).children().css({ position: "absolute", top: 0 }); k.$elts.wrap = k.$elts.content.wrap('<div class="carousel-wrap"></div>').parent().css({ overflow: "hidden", position: "relative" }); k.steps = { first: 0, count: k.$elts.content.children().length }; k.steps.last = k.steps.count - 1; if (c.isFunction(k.params.prevBtnInsertFn)) { k.$elts.prevBtn = k.params.prevBtnInsertFn(k.$elts) } else { k.$elts.prevBtn = c(j.prevBtn)[j.prevBtnInsert](k.$elts.carousel) } if (c.isFunction(k.params.nextBtnInsertFn)) { k.$elts.nextBtn = k.params.nextBtnInsertFn(k.$elts) } else { k.$elts.nextBtn = c(j.nextBtn)[j.nextBtnInsert](k.$elts.carousel) } k.$elts.nextBtn.addClass("carousel-control next carousel-next"); k.$elts.prevBtn.addClass("carousel-control previous carousel-previous"); a(k); if (k.params.pagination) { i(k) } h(k); c(function() { var n = k.$elts.content.children(); var m = 0; n.each(function() { $item = c(this); $itemHeight = $item.outerHeight(); if ($itemHeight > m) { m = $itemHeight } }); if (k.params.verticalMargin > 0) { m = m + k.params.verticalMargin } n.height(m); var l = k.$elts.content.children(":first"); k.itemWidth = l.outerWidth(); if (j.direction == "vertical") { k.contentWidth = k.itemWidth } else { if (j.equalWidths) { k.contentWidth = k.itemWidth * k.steps.count } else { k.contentWidth = (function() { var o = 0; k.$elts.content.children().each(function() { o += c(this).outerWidth() }); return o })() } } k.$elts.content.width(k.contentWidth); k.itemHeight = m; if (j.direction == "vertical") { k.$elts.content.css({ height: k.itemHeight * k.steps.count + "px" }); k.$elts.content.parent().css({ height: k.itemHeight * k.params.dispItems + "px" }) } else { k.$elts.content.parent().css({ height: k.itemHeight + "px" }) } d(k); c.each(k.launchOnLoad, function(o, p) { p() }); if (k.params.autoSlide) { window.setTimeout(function() { k.autoSlideInterval = window.setInterval(function() { b(k, e(k, "next")) }, k.params.autoSlideInterval) }, k.params.delayAutoSlide) } }) }) }; function a(j) { j.$elts.nextBtn.add(j.$elts.prevBtn).bind("enable", function() { var k = c(this).unbind("click").bind("click", function() { b(j, e(j, (k.is(".next") ? "next" : "prev"))); g(j) }).removeClass("disabled"); if (j.params.combinedClasses) { k.removeClass("next-disabled previous-disabled") } }).bind("disable", function() { var k = c(this).unbind("click").addClass("disabled"); if (j.params.combinedClasses) { if (k.is(".next")) { k.addClass("next-disabled") } else { if (k.is(".previous")) { k.addClass("previous-disabled") } } } }).hover(function() { c(this).toggleClass("hover") }) } function i(j) { j.$elts.pagination = c('<div class="center-wrap"><div class="carousel-pagination"><p></p></div></div>')[((j.params.paginationPosition == "outside") ? "insertAfter" : "appendTo")](j.$elts.carousel).find("p"); j.$elts.paginationBtns = c([]); j.$elts.content.find("li").each(function(k) { if (k % j.params.dispItems == 0) { j.$elts.paginationBtns = j.$elts.paginationBtns.add(c('<a role="button"><span>' + j.params.tabLabel(j.$elts.paginationBtns.length + 1) + "</span></a>").data("firstStep", k)) } }); j.$elts.paginationBtns.each(function() { c(this).appendTo(j.$elts.pagination) }); j.$elts.paginationBtns.slice(0, 1).addClass("active"); j.launchOnLoad.push(function() { j.$elts.paginationBtns.click(function(k) { b(j, c(this).data("firstStep")); g(j) }) }) } function h(j) { if (j.params.useAddress && c.isFunction(c.fn.address)) { c.address.init(function(l) { var k = c.address.pathNames(); if (k[0] === j.params.adressIdentifier && !!k[1]) { b(j, k[1] - 1) } else { c.address.value("/" + j.params.adressIdentifier + "/1") } }).change(function(l) { var k = c.address.pathNames(); if (k[0] === j.params.adressIdentifier && !!k[1]) { b(j, k[1] - 1) } }) } else { j.params.useAddress = false } } function b(j, k) { j.params.callback(k); f(j, k); j.steps.first = k; d(j); if (j.params.useAddress) { c.address.value("/" + j.params.adressIdentifier + "/" + (k + 1)) } } function e(k, j) { if (j == "prev") { if (!k.params.showEmptyItems) { if (k.steps.first == 0) { return ((k.params.loop) ? (k.steps.count - k.params.dispItems) : false) } else { return Math.max(0, k.steps.first - k.params.dispItems) } } else { if ((k.steps.first - k.params.dispItems) >= 0) { return k.steps.first - k.params.dispItems } else { return ((k.params.loop) ? (k.steps.count - k.params.dispItems) : false) } } } else { if (j == "next") { if ((k.steps.first + k.params.dispItems) < k.steps.count) { if (!k.params.showEmptyItems) { return Math.min(k.steps.first + k.params.dispItems, k.steps.count - k.params.dispItems) } else { return k.steps.first + k.params.dispItems } } else { return ((k.params.loop) ? 0 : false) } } } } function f(j, k) { switch (j.params.effect) { case "no": if (j.params.direction == "vertical") { j.$elts.content.css("top", -(j.itemHeight * k) + "px") } else { j.$elts.content.css("left", -(j.itemWidth * k) + "px") } break; case "fade": if (j.params.direction == "vertical") { j.$elts.content.hide().css("top", -(j.itemHeight * k) + "px").fadeIn(j.params.animSpeed) } else { j.$elts.content.hide().css("left", -(j.itemWidth * k) + "px").fadeIn(j.params.animSpeed) } break; default: if (j.params.direction == "vertical") { j.$elts.content.stop().animate({ top: -(j.itemHeight * k) + "px" }, j.params.animSpeed, j.params.slideEasing) } else { j.$elts.content.stop().animate({ left: -(j.itemWidth * k) + "px" }, j.params.animSpeed, j.params.slideEasing) } break } } function d(j) { if (e(j, "prev") !== false) { j.$elts.prevBtn.trigger("enable") } else { j.$elts.prevBtn.trigger("disable") } if (e(j, "next") !== false) { j.$elts.nextBtn.trigger("enable") } else { j.$elts.nextBtn.trigger("disable") } if (j.params.pagination) { j.$elts.paginationBtns.removeClass("active").filter(function() { return (c(this).data("firstStep") == j.steps.first) }).addClass("active") } } function g(j) { if (!!j.autoSlideInterval) { window.clearInterval(j.autoSlideInterval) } } })(jQuery);
