/* 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:"relative",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
    {
        s.contentWidth=s.itemWidth;
        
        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.contentWidth = s.itemWidth*Math.ceil(s.steps.count/s.params.dispItems);        
    }
    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.css({width:s.itemWidth+"px"});
        s.$elts.content.children().css({width:s.itemWidth+"px"});
         
        s.$elts.content.parent().css({height:s.itemHeight*s.params.dispItems+"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(q.params.direction=="vertical")
    {
        if(r%q.params.dispItems==0)
        //if(r <= q.params.dispItems)
        {
            k(q,r)
        }
    }
    else
    {
        //if(r%q.params.dispItems==0)
        var totalsteps = Math.ceil(q.steps.count/q.params.dispItems);
        if(r < totalsteps)
        {
            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)
{
    var step = 1;
    var totalsteps = Math.ceil(r.steps.count/r.params.dispItems);
    if (r.params.direction=="vertical")
    {
        step = r.params.dispItems;
        totalsteps = r.steps.count;
    }

    if(q=="prev")
    {
        if(!r.params.showEmptyItems)
        {
            if(r.steps.first==0)
            {
                return((r.params.loop)?(totalsteps-step):false)
            }
            else
            {
                return Math.max(0,r.steps.first-step)
            }
        }
        else
        {
            //if((r.steps.first-r.params.dispItems)>=0)
            if((r.steps.first-step)>=0)
            {
                //return r.steps.first-r.params.dispItems
                return r.steps.first-step
            }
            else
            {
                //return((r.params.loop)?(r.steps.count-r.params.dispItems):false)
                return((r.params.loop)?(totalsteps-step):false)
            }
        }
    }
    else
    {
        if(q=="next")
        {
            //if((r.steps.first+r.params.dispItems)<r.steps.count)
            if((r.steps.first+1)<totalsteps)
            {
                if(!r.params.showEmptyItems)
                {
                    //return Math.min(r.steps.first+r.params.dispItems,r.steps.count-r.params.dispItems)
                    return Math.min(r.steps.first+1,totalsteps-step)
                }
                else
                {
                    //return r.steps.first+r.params.dispItems
                    return r.steps.first+step
                }
            }
            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);
