(function(C){function B(){if(window.console&&window.console.log){window.console.log("[carousel] "+Array.prototype.join.call(arguments," "))}}C.fn.jcarousel=function(E){return this.each(function(){new A(this,E)})};var D={vertical:false,start:1,offset:1,size:null,scroll:3,visible:null,animation:"normal",easing:"swing",auto:0,wrap:null,initCallback:null,reloadCallback:null,itemLoadCallback:null,itemFirstInCallback:null,itemFirstOutCallback:null,itemLastInCallback:null,itemLastOutCallback:null,itemVisibleInCallback:null,itemVisibleOutCallback:null,buttonNextHTML:"<div></div>",buttonPrevHTML:"<div></div>",buttonNextEvent:"click",buttonPrevEvent:"click",buttonNextCallback:null,buttonPrevCallback:null};C.jcarousel=function(H,F){this.options=C.extend({},D,F||{});this.locked=false;this.container=null;this.clip=null;this.list=null;this.buttonNext=null;this.buttonPrev=null;this.wh=!this.options.vertical?"width":"height";this.lt=!this.options.vertical?"left":"top";var L="",J=H.className.split(" ");for(var G=0;G<J.length;G++){if(J[G].indexOf("jcarousel-skin")!=-1){C(H).removeClass(J[G]);var L=J[G];break}}if(H.nodeName=="UL"||H.nodeName=="OL"){this.list=C(H);this.container=this.list.parent();if(this.container.hasClass("jcarousel-clip")){if(!this.container.parent().hasClass("jcarousel-container")){this.container=this.container.wrap("<div></div>")}this.container=this.container.parent()}else{if(!this.container.hasClass("jcarousel-container")){this.container=this.list.wrap("<div></div>").parent()}}}else{this.container=C(H);this.list=C(H).find(">ul,>ol,div>ul,div>ol")}if(L!=""&&this.container.parent()[0].className.indexOf("jcarousel-skin")==-1){this.container.wrap('<div class=" '+L+'"></div>')}this.clip=this.list.parent();if(!this.clip.length||!this.clip.hasClass("jcarousel-clip")){this.clip=this.list.wrap("<div></div>").parent()}this.buttonPrev=C(".jcarousel-prev",this.container);if(this.buttonPrev.size()==0&&this.options.buttonPrevHTML!=null){this.buttonPrev=this.clip.before(this.options.buttonPrevHTML).prev()}this.buttonPrev.addClass(this.className("jcarousel-prev"));this.buttonNext=C(".jcarousel-next",this.container);if(this.buttonNext.size()==0&&this.options.buttonNextHTML!=null){this.buttonNext=this.clip.before(this.options.buttonNextHTML).prev()}this.buttonNext.addClass(this.className("jcarousel-next"));this.clip.addClass(this.className("jcarousel-clip"));this.list.addClass(this.className("jcarousel-list"));this.container.addClass(this.className("jcarousel-container"));var I=this.options.visible!=null?Math.ceil(this.clipping()/this.options.visible):null;var K=this.list.children("li");var M=this;if(K.size()>0){var E=0,G=this.options.offset;K.each(function(){M.format(this,G++);E+=M.dimension(this,I)});this.list.css(this.wh,E+"px");if(!F||F.size===undefined){this.options.size=K.size()}}this.container.css("display","block");this.buttonNext.css("display","block");this.buttonPrev.css("display","block");this.funcNext=function(){M.next()};this.funcPrev=function(){M.prev()};this.funcResize=function(){M.reload()};if(this.options.initCallback!=null){this.options.initCallback(this,"init")}if(C.browser.safari){this.buttons(false,false);C(window).bind("load",function(){M.setup()})}else{this.setup()}};var A=C.jcarousel;A.fn=A.prototype={jcarousel:"0.2.3"};A.fn.extend=A.extend=C.extend;A.fn.extend({setup:function(){this.first=null;this.last=null;this.prevFirst=null;this.prevLast=null;this.animating=false;this.timer=null;this.tail=null;this.inTail=false;if(this.locked){return }this.list.css(this.lt,this.pos(this.options.offset)+"px");var E=this.pos(this.options.start);this.prevFirst=this.prevLast=null;this.animate(E,false);C(window).unbind("resize",this.funcResize).bind("resize",this.funcResize)},reset:function(){this.list.empty();this.list.css(this.lt,"0px");this.list.css(this.wh,"10px");if(this.options.initCallback!=null){this.options.initCallback(this,"reset")}this.setup()},reload:function(){if(this.tail!=null&&this.inTail){this.list.css(this.lt,A.intval(this.list.css(this.lt))+this.tail)}this.tail=null;this.inTail=false;if(this.options.reloadCallback!=null){this.options.reloadCallback(this)}if(this.options.visible!=null){var G=this;var H=Math.ceil(this.clipping()/this.options.visible),F=0,E=0;C("li",this.list).each(function(I){F+=G.dimension(this,H);if(I+1<G.first){E=F}});this.list.css(this.wh,F+"px");this.list.css(this.lt,-E+"px")}this.scroll(this.first,false)},lock:function(){this.locked=true;this.buttons()},unlock:function(){this.locked=false;this.buttons()},size:function(E){if(E!=undefined){this.options.size=E;if(!this.locked){this.buttons()}}return this.options.size},has:function(F,G){if(G==undefined||!G){G=F}if(this.options.size!==null&&G>this.options.size){G=this.options.size}for(var E=F;E<=G;E++){var H=this.get(E);if(!H.length||H.hasClass("jcarousel-item-placeholder")){return false}}return true},get:function(E){return C(".jcarousel-item-"+E,this.list)},add:function(H,M){var I=this.get(H),F=0,L=0;if(I.length==0){var K,I=this.create(H),G=A.intval(H);while(K=this.get(--G)){if(G<=0||K.length){G<=0?this.list.prepend(I):K.after(I);break}}}else{F=this.dimension(I)}I.removeClass(this.className("jcarousel-item-placeholder"));typeof M=="string"?I.html(M):I.empty().append(M);var J=this.options.visible!=null?Math.ceil(this.clipping()/this.options.visible):null;var E=this.dimension(I,J)-F;if(H>0&&H<this.first){this.list.css(this.lt,A.intval(this.list.css(this.lt))-E+"px")}this.list.css(this.wh,A.intval(this.list.css(this.wh))+E+"px");return I},remove:function(E){var F=this.get(E);if(!F.length||(E>=this.first&&E<=this.last)){return }var G=this.dimension(F);if(E<this.first){this.list.css(this.lt,A.intval(this.list.css(this.lt))+G+"px")}F.remove();this.list.css(this.wh,A.intval(this.list.css(this.wh))-G+"px")},next:function(){this.stopAuto();if(this.tail!=null&&!this.inTail){this.scrollTail(false)}else{this.scroll(((this.options.wrap=="both"||this.options.wrap=="last")&&this.options.size!=null&&this.last==this.options.size)?1:this.first+this.options.scroll)}},prev:function(){this.stopAuto();if(this.tail!=null&&this.inTail){this.scrollTail(true)}else{this.scroll(((this.options.wrap=="both"||this.options.wrap=="first")&&this.options.size!=null&&this.first==1)?this.options.size:this.first-this.options.scroll)}},scrollTail:function(E){if(this.locked||this.animating||!this.tail){return }var F=A.intval(this.list.css(this.lt));!E?F-=this.tail:F+=this.tail;this.inTail=!E;this.prevFirst=this.first;this.prevLast=this.last;this.animate(F)},scroll:function(F,E){if(this.locked||this.animating){return }this.animate(this.pos(F),E)},pos:function(R){if(this.locked||this.animating){return }R=A.intval(R);if(this.options.wrap!="circular"){R=R<1?1:(this.options.size&&R>this.options.size?this.options.size:R)}var O=this.first>R;var F=A.intval(this.list.css(this.lt));var S=this.options.wrap!="circular"&&this.first<=1?1:this.first;var V=O?this.get(S):this.get(this.last);var Q=O?S:S-1;var T=null,P=0,M=false,U=0;while(O?--Q>=R:++Q<R){T=this.get(Q);M=!T.length;if(T.length==0){T=this.create(Q).addClass(this.className("jcarousel-item-placeholder"));V[O?"before":"after"](T)}V=T;U=this.dimension(T);if(M){P+=U}if(this.first!=null&&(this.options.wrap=="circular"||(Q>=1&&(this.options.size==null||Q<=this.options.size)))){F=O?F+U:F-U}}var J=this.clipping();var L=[];var E=0,Q=R,K=0;var V=this.get(R-1);while(++E){T=this.get(Q);M=!T.length;if(T.length==0){T=this.create(Q).addClass(this.className("jcarousel-item-placeholder"));V.length==0?this.list.prepend(T):V[O?"before":"after"](T)}V=T;var U=this.dimension(T);if(U==0){B("jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...");return 0}if(this.options.wrap!="circular"&&this.options.size!==null&&Q>this.options.size){L.push(T)}else{if(M){P+=U}}K+=U;if(K>=J){break}Q++}for(var I=0;I<L.length;I++){L[I].remove()}if(P>0){this.list.css(this.wh,this.dimension(this.list)+P+"px");if(O){F-=P;this.list.css(this.lt,A.intval(this.list.css(this.lt))-P+"px")}}var H=R+E-1;if(this.options.wrap!="circular"&&this.options.size&&H>this.options.size){H=this.options.size}if(Q>H){E=0,Q=H,K=0;while(++E){var T=this.get(Q--);if(!T.length){break}K+=this.dimension(T);if(K>=J){break}}}var G=H-E+1;if(this.options.wrap!="circular"&&G<1){G=1}if(this.inTail&&O){F+=this.tail;this.inTail=false}this.tail=null;if(this.options.wrap!="circular"&&H==this.options.size&&(H-E+1)>=1){var N=A.margin(this.get(H),!this.options.vertical?"marginRight":"marginBottom");if((K-N)>J){this.tail=K-J-N}}while(R-->G){F+=this.dimension(this.get(R))}this.prevFirst=this.first;this.prevLast=this.last;this.first=G;this.last=H;return F},animate:function(H,E){if(this.locked||this.animating){return }this.animating=true;var F=this;var G=function(){F.animating=false;if(H==0){F.list.css(F.lt,0)}if(F.options.wrap=="both"||F.options.wrap=="last"||F.options.size==null||F.last<F.options.size){F.startAuto()}F.buttons();F.notify("onAfterAnimation")};this.notify("onBeforeAnimation");if(!this.options.animation||E==false){this.list.css(this.lt,H+"px");G()}else{var I=!this.options.vertical?{left:H}:{top:H};this.list.animate(I,this.options.animation,this.options.easing,G)}},startAuto:function(F){if(F!=undefined){this.options.auto=F}if(this.options.auto==0){return this.stopAuto()}if(this.timer!=null){return }var E=this;this.timer=setTimeout(function(){E.next()},this.options.auto*1000)},stopAuto:function(){if(this.timer==null){return }clearTimeout(this.timer);this.timer=null},buttons:function(G,F){if(G==undefined||G==null){var G=!this.locked&&this.options.size!==0&&((this.options.wrap&&this.options.wrap!="first")||this.options.size==null||this.last<this.options.size);if(!this.locked&&(!this.options.wrap||this.options.wrap=="first")&&this.options.size!=null&&this.last>=this.options.size){G=this.tail!=null&&!this.inTail}}if(F==undefined||F==null){var F=!this.locked&&this.options.size!==0&&((this.options.wrap&&this.options.wrap!="last")||this.first>1);if(!this.locked&&(!this.options.wrap||this.options.wrap=="last")&&this.options.size!=null&&this.first==1){F=this.tail!=null&&this.inTail}}var E=this;this.buttonNext[G?"bind":"unbind"](this.options.buttonNextEvent,this.funcNext)[G?"removeClass":"addClass"](this.className("jcarousel-next-disabled")).attr("disabled",G?false:true);this.buttonPrev[F?"bind":"unbind"](this.options.buttonPrevEvent,this.funcPrev)[F?"removeClass":"addClass"](this.className("jcarousel-prev-disabled")).attr("disabled",F?false:true);if(this.buttonNext.length>0&&(this.buttonNext[0].jcarouselstate==undefined||this.buttonNext[0].jcarouselstate!=G)&&this.options.buttonNextCallback!=null){this.buttonNext.each(function(){E.options.buttonNextCallback(E,this,G)});this.buttonNext[0].jcarouselstate=G}if(this.buttonPrev.length>0&&(this.buttonPrev[0].jcarouselstate==undefined||this.buttonPrev[0].jcarouselstate!=F)&&this.options.buttonPrevCallback!=null){this.buttonPrev.each(function(){E.options.buttonPrevCallback(E,this,F)});this.buttonPrev[0].jcarouselstate=F}},notify:function(E){var F=this.prevFirst==null?"init":(this.prevFirst<this.first?"next":"prev");this.callback("itemLoadCallback",E,F);if(this.prevFirst!==this.first){this.callback("itemFirstInCallback",E,F,this.first);this.callback("itemFirstOutCallback",E,F,this.prevFirst)}if(this.prevLast!==this.last){this.callback("itemLastInCallback",E,F,this.last);this.callback("itemLastOutCallback",E,F,this.prevLast)}this.callback("itemVisibleInCallback",E,F,this.first,this.last,this.prevFirst,this.prevLast);this.callback("itemVisibleOutCallback",E,F,this.prevFirst,this.prevLast,this.first,this.last)},callback:function(I,L,E,J,H,G,F){if(this.options[I]==undefined||(typeof this.options[I]!="object"&&L!="onAfterAnimation")){return }var M=typeof this.options[I]=="object"?this.options[I][L]:this.options[I];if(!C.isFunction(M)){return }var N=this;if(J===undefined){M(N,E,L)}else{if(H===undefined){this.get(J).each(function(){M(N,this,J,E,L)})}else{for(var K=J;K<=H;K++){if(K!==null&&!(K>=G&&K<=F)){this.get(K).each(function(){M(N,this,K,E,L)})}}}}},create:function(E){return this.format("<li></li>",E)},format:function(G,F){var E=C(G).addClass(this.className("jcarousel-item")).addClass(this.className("jcarousel-item-"+F));E.attr("jcarouselindex",F);return E},className:function(E){return E+" "+E+(!this.options.vertical?"-horizontal":"-vertical")},dimension:function(H,I){var G=H.jquery!=undefined?H[0]:H;var F=!this.options.vertical?G.offsetWidth+A.margin(G,"marginLeft")+A.margin(G,"marginRight"):G.offsetHeight+A.margin(G,"marginTop")+A.margin(G,"marginBottom");if(I==undefined||F==I){return F}var E=!this.options.vertical?I-A.margin(G,"marginLeft")-A.margin(G,"marginRight"):I-A.margin(G,"marginTop")-A.margin(G,"marginBottom");C(G).css(this.wh,E+"px");return this.dimension(G)},clipping:function(){return !this.options.vertical?this.clip[0].offsetWidth-A.intval(this.clip.css("borderLeftWidth"))-A.intval(this.clip.css("borderRightWidth")):this.clip[0].offsetHeight-A.intval(this.clip.css("borderTopWidth"))-A.intval(this.clip.css("borderBottomWidth"))},index:function(E,F){if(F==undefined){F=this.options.size}return Math.round((((E-1)/F)-Math.floor((E-1)/F))*F)+1}});A.extend({defaults:function(E){return C.extend(D,E||{})},margin:function(I,H){if(!I){return 0}var G=I.jquery!=undefined?I[0]:I;if(H=="marginRight"&&C.browser.safari){var F={display:"block","float":"none",width:"auto"},E,J;C.swap(G,F,function(){E=G.offsetWidth});F.marginRight=0;C.swap(G,F,function(){J=G.offsetWidth});return J-E}return A.intval(C.css(G,H))},intval:function(E){E=parseInt(E);return isNaN(E)?0:E}})})(jQuery);
