(function($){$.fn.jCarouselLite=function(settings){settings=$.extend({btnPrev:null,btnNext:null,btnGo:null,mouseWheel:false,auto:null,clickDuringAnim:true,speed:200,easing:null,vertical:false,circular:true,visible:3,start:0,scroll:1,beforeStart:null,onStart:null,afterEnd:null},settings||{});var css,width,height;css=function(el,prop){return parseInt($.css(el[0],prop))||0};width=function(el){return el[0].offsetWidth+css(el,"marginLeft")+css(el,"marginRight")};height=function(el){return el[0].offsetHeight+css(el,"marginTop")+css(el,"marginBottom")};return this.each(function(){var running=false,animCss=settings.vertical?"top":"left",sizeCss=settings.vertical?"height":"width",el=$(this),list=$("ul",el).get(0)?$("ul",el).eq(0):$("ol",el).eq(0),tLi=$("> li",list),tl=tLi.size(),visible=settings.visible;if(el.is("ul")||el.is("ol")){list=el;el=list.parent()}if(settings.circular){list.prepend(tLi.slice(tl-visible-1+1).clone()).append(tLi.slice(0,visible).clone());settings.start+=visible}var li=$("> li",list),itemLength=li.size(),curr=settings.start;el.css("visibility","visible");li.css({overflow:"hidden","float":settings.vertical?"none":"left"});list.css({margin:"0",padding:"0",position:"relative","list-style-type":"none","z-index":"1"});el.css({overflow:"hidden",position:"relative","z-index":"2",left:"0px"});var liSize=settings.vertical?height(li):width(li);var listSize=liSize*itemLength;var divSize=liSize*visible;li.css({width:li.width(),height:li.height()});list.css(sizeCss,listSize+"px").css(animCss,-(curr*liSize));el.css(sizeCss,divSize+"px");if(settings.btnPrev){settings.btnPrev=typeof settings.btnPrev==="string"?el.find(settings.btnPrev):settings.btnPrev;$(settings.btnPrev).click(function(e){e.preventDefault();stopAuto();return go(curr-settings.scroll)});if(!settings.circular&&settings.start===0){settings.btnPrev.addClass("disabled")}}if(settings.btnNext){settings.btnNext=typeof settings.btnNext==="string"?el.find(settings.btnNext):settings.btnNext;$(settings.btnNext).click(function(e){e.preventDefault();stopAuto();return go(curr+settings.scroll)})}if(settings.btnGo){settings.btnGo=typeof settings.btnGo==="string"?el.find(settings.btnGo):settings.btnGo;$.each(settings.btnGo,function(i,val){$(val).click(function(e,trigger){e.preventDefault();var orig=e.originalEvent;if(!orig||(orig&&!orig.preventStop)){stopAuto()}if(!trigger&&!$(this).hasClass("loading")){return go(settings.circular?settings.visible+i:i)}})})}if(settings.mouseWheel&&el.mousewheel){el.mousewheel(function(e,d){return d>0?go(curr-settings.scroll):go(curr+settings.scroll)})}if(settings.auto){settings.interval=window.setInterval(function(){go(curr+settings.scroll)},settings.auto+settings.speed)}function stopAuto(e){if(settings.interval){window.clearInterval(settings.interval)}}function vis(){return li.slice(curr).slice(0,visible)}el.data("carousel-go",function(to){go(to)});function go(to){if(!running){if(settings.beforeStart){settings.beforeStart.call(this,vis())}if(settings.circular){if(to<=settings.start-visible-1){list.css(animCss,-((itemLength-(visible*2))*liSize)+"px");curr=(to==settings.start-visible-1)?itemLength-(visible*2)-1:itemLength-(visible*2)-settings.scroll}else{if(to>=itemLength-visible+1){list.css(animCss,-((visible)*liSize)+"px");curr=(to==itemLength-visible+1)?visible+1:visible+settings.scroll}else{curr=to}}}else{if(to<0||to>itemLength-visible){return}else{curr=to}}running=true;if(settings.onStart){settings.onStart.call(this,vis())}var currentPosition=css(list,(animCss=="left")?"left":"top"),nextPosition=-(curr*liSize),callback;callback=function(){if(settings.afterEnd){settings.afterEnd.call(this,vis())}running=false};if(currentPosition==nextPosition){callback()}else{list.animate((animCss=="left")?{left:nextPosition}:{top:nextPosition},settings.speed,settings.easing,callback)}if(!settings.circular){$(settings.btnPrev).add(settings.btnNext).removeClass("disabled");$((curr-settings.scroll<0&&settings.btnPrev)||(curr+settings.scroll>itemLength-visible&&settings.btnNext)||[]).addClass("disabled")}}else{if(settings.clickDuringAnim){running=false;list.stop();go(to)}}return false}})}})(jQuery);