/* 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);
