$.fn.infiniteCarousel=function(c){function u(f,d){return(new Array(d+1)).join(f)}return this.each(function(){var f=$("> div",this),d=f.find("> ul"),a=d.find("> li"),m=a.filter(":first"),g=m.outerWidth(),b=Math.ceil(f.innerWidth()/g),h=1,k;m={scrollItemsNumber:b,scrollTimeout:3000,fadeTimeout:1000};var r,n=false;c=$.extend({},m,c);if(c.scrollItemsNumber>b||c.scrollItemsNumber<=0)c.scrollItemsNumber=b;k=Math.ceil((a.length-b)/c.scrollItemsNumber)+1;if(a.length%c.scrollItemsNumber!=0){d.append(u('<li class="empty" />',
b-a.length%c.scrollItemsNumber));a=d.find("> li")}a.filter(":last").after(a.slice(0,b).clone().addClass("cloned"));if(f.scrollLeft()){a.filter(":last").after(a.slice(-b).clone());a.slice(-b).addClass("delete");a=d.find("> li");f.scrollLeft(a.length*g-g*b*2);a.filter(":first").before(a.slice(-b*2,-b).clone().addClass("cloned"));a=d.find("> li");a.slice(0,-b*2).css({opacity:0});a.slice(-b).css({opacity:0});h=k}else{a.filter(":first").before(a.slice(0,b).clone());a.slice(0,b).addClass("delete");f.scrollLeft(g*
b);a=d.find("> li");a.filter(":first").before(a.slice(-b*2,-b).clone().addClass("cloned"));a=d.find("> li");a.slice(0,b).css({opacity:0});a.slice(b*2).css({opacity:0})}d.find("> li").remove(".delete");r=d.find("> li.empty").length/2;a=d.find("> li");function o(e){if(n)return false;var i=e<h?-1:1,s=Math.abs(h-e),p,l,j,q;if(r&&(!e||e>k)){p=g*b*i*s;e+=i;l=b}else{p=g*i*c.scrollItemsNumber*s;l=c.scrollItemsNumber}j=b+(h-1)*c.scrollItemsNumber;if(i==-1)j+=b-l;q=j+l;n=true;a.slice(j,q).animate({opacity:0},
c.fadeTimeout,function(){f.filter(":not(:animated)").animate({scrollLeft:"+="+p},c.scrollTimeout,function(){var t=j+b*i,v=t+l;a.slice(t,v).animate({opacity:1},c.fadeTimeout,function(){if(e==1-Math.ceil(b/c.scrollItemsNumber)){a.slice(a.length-b*2,a.length-b).css({opacity:1});f.scrollLeft(g*(a.length-b*2));a.slice(0,j).css({opacity:0});e=k}else if(e>k+b-c.scrollItemsNumber-(b-1)%c.scrollItemsNumber){a.slice(b,b*2).css({opacity:1});f.scrollLeft(g*b);a.slice(q).css({opacity:0});e=1}h=e;n=false})})});
return false}$("a.back",this).click(function(){return o(h-1)});$("a.forward",this).click(function(){return o(h+1)});$(this).bind("goto",function(e,i){o(i)})})};$(document).ready(function(){$(".infiniteCarousel").infiniteCarousel({scrollItemsNumber:1,scrollTimeout:1000})});