(function(n){var i,t;n.fn.jcarousel=function(n){return this.each(function(){new t(this,n)})},i={vertical:!1,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},n.jcarousel=function(t,r){var e,o,h,u;for(this.options=n.extend({},i,r||{}),this.locked=!1,this.container=null,this.clip=null,this.list=null,this.buttonNext=null,this.buttonPrev=null,this.wh=this.options.vertical?"height":"width",this.lt=this.options.vertical?"top":"left",o="",e=t.className.split(" "),u=0;u<e.length;u++)if(e[u].indexOf("jcarousel-skin")!=-1){n(t).removeClass(e[u]),o=e[u];break}t.nodeName=="UL"||t.nodeName=="OL"?(this.list=n(t),this.container=this.list.parent(),this.container.hasClass("jcarousel-clip")?(this.container.parent().hasClass("jcarousel-container")||(this.container=this.container.wrap("<div></div>")),this.container=this.container.parent()):this.container.hasClass("jcarousel-container")||(this.container=this.list.wrap("<div></div>").parent())):(this.container=n(t),this.list=n(t).find(">ul,>ol,div>ul,div>ol")),o!=""&&this.container.parent()[0].className.indexOf("jcarousel-skin")==-1&&this.container.wrap('<div class=" '+o+'"></div>'),this.clip=this.list.parent(),this.clip.length&&this.clip.hasClass("jcarousel-clip")||(this.clip=this.list.wrap("<div></div>").parent()),this.buttonPrev=n(".jcarousel-prev",this.container),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=n(".jcarousel-next",this.container),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 c=this.options.visible!=null?Math.ceil(this.clipping()/this.options.visible):null,s=this.list.children("li"),f=this;s.size()>0&&(h=0,u=this.options.offset,s.each(function(){f.format(this,u++),h+=f.dimension(this,c)+500}),this.list.css(this.wh,h+"px"),this.list.css("height","50px"),r&&r.size!==undefined||(this.options.size=s.size())),this.container.css("display","block"),this.buttonNext.css("display","block"),this.buttonPrev.css("display","block"),this.funcNext=function(){f.next()},this.funcPrev=function(){f.prev()},this.funcResize=function(){f.reload()},this.options.initCallback!=null&&this.options.initCallback(this,"init"),n.browser.safari?(this.buttons(!1,!1),n(window).bind("load",function(){f.setup()})):this.setup()},t=n.jcarousel,t.fn=t.prototype={jcarousel:"0.2.3"},t.fn.extend=t.extend=n.extend,t.fn.extend({setup:function(){this.first=null,this.last=null,this.prevFirst=null,this.prevLast=null,this.animating=!1,this.timer=null,this.tail=null,this.inTail=!1;if(this.locked)return;this.list.css(this.lt,this.pos(this.options.offset)+"px");var t=this.pos(this.options.start);this.prevFirst=this.prevLast=null,this.animate(t,!1),n(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"),this.options.initCallback!=null&&this.options.initCallback(this,"reset"),this.setup()},reload:function(){this.tail!=null&&this.inTail&&this.list.css(this.lt,t.intval(this.list.css(this.lt))+this.tail),this.tail=null,this.inTail=!1,this.options.reloadCallback!=null&&this.options.reloadCallback(this);if(this.options.visible!=null){var u=this,f=Math.ceil(this.clipping()/this.options.visible),i=0,r=0;n("li",this.list).each(function(n){i+=u.dimension(this,f),n+1<u.first&&(r=i)}),this.list.css(this.wh,i+"px"),this.list.css(this.lt,-r+"px")}this.scroll(this.first,!1)},lock:function(){this.locked=!0,this.buttons()},unlock:function(){this.locked=!1,this.buttons()},size:function(n){return n!=undefined&&(this.options.size=n,this.locked||this.buttons()),this.options.size},has:function(n,t){var i,r;for(t!=undefined&&t||(t=n),this.options.size!==null&&t>this.options.size&&(t=this.options.size),i=n;i<=t;i++){r=this.get(i);if(!r.length||r.hasClass("jcarousel-item-placeholder"))return!1}return!0},get:function(t){return n(".jcarousel-item-"+t,this.list)},add:function(n,i){var r=this.get(n),s=0,h=0,f,u,o,e;if(r.length==0){r=this.create(n),u=t.intval(n);while(f=this.get(--u))if(u<=0||f.length){u<=0?this.list.prepend(r):f.after(r);break}}else s=this.dimension(r);return r.removeClass(this.className("jcarousel-item-placeholder")),typeof i=="string"?r.html(i):r.empty().append(i),o=this.options.visible!=null?Math.ceil(this.clipping()/this.options.visible):null,e=this.dimension(r,o)-s,n>0&&n<this.first&&this.list.css(this.lt,t.intval(this.list.css(this.lt))-e+"px"),this.list.css(this.wh,t.intval(this.list.css(this.wh))+e+"px"),r},remove:function(n){var r=this.get(n),i;if(!r.length||n>=this.first&&n<=this.last)return;i=this.dimension(r),n<this.first&&this.list.css(this.lt,t.intval(this.list.css(this.lt))+i+"px"),r.remove(),this.list.css(this.wh,t.intval(this.list.css(this.wh))-i+"px")},next:function(){this.stopAuto(),this.tail==null||this.inTail?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):this.scrollTail(!1)},prev:function(){this.stopAuto(),this.tail!=null&&this.inTail?this.scrollTail(!0):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(n){if(this.locked||this.animating||!this.tail)return;var i=t.intval(this.list.css(this.lt));n?i+=this.tail:i-=this.tail,this.inTail=!n,this.prevFirst=this.first,this.prevLast=this.last,this.animate(i)},scroll:function(n,t){if(this.locked||this.animating)return;this.animate(this.pos(n),t)},pos:function(n){var f,v,u,i,a,w;if(this.locked||this.animating)return;n=t.intval(n),this.options.wrap!="circular"&&(n=n<1?1:this.options.size&&n>this.options.size?this.options.size:n);var e=this.first>n,o=t.intval(this.list.css(this.lt)),b=this.options.wrap!="circular"&&this.first<=1?1:this.first,l=e?this.get(b):this.get(this.last),r=e?b:b-1,i=null,c=0,p=!1,f=0;while(e?--r>=n:++r<n)i=this.get(r),p=!i.length,i.length==0&&(i=this.create(r).addClass(this.className("jcarousel-item-placeholder")),l[e?"before":"after"](i)),l=i,f=this.dimension(i),p&&(c+=f),this.first==null||this.options.wrap!="circular"&&(r<1||this.options.size!=null&&r>this.options.size)||(o=e?o+f:o-f);var y=this.clipping(),k=[],h=0,r=n,s=0,l=this.get(n-1);while(++h){i=this.get(r),p=!i.length,i.length==0&&(i=this.create(r).addClass(this.className("jcarousel-item-placeholder")),l.length==0?this.list.prepend(i):l[e?"before":"after"](i)),l=i,f=this.dimension(i);if(f==0)return alert("jCarousel: No width/height set for items. This will cause an infinite loop. Aborting..."),0;this.options.wrap!="circular"&&this.options.size!==null&&r>this.options.size?k.push(i):p&&(c+=f),s+=f;if(s>=y)break;r++}for(v=0;v<k.length;v++)k[v].remove();c>0&&(this.list.css(this.wh,this.dimension(this.list)+c+"px"),e&&(o-=c,this.list.css(this.lt,t.intval(this.list.css(this.lt))-c+"px"))),u=n+h-1,this.options.wrap!="circular"&&this.options.size&&u>this.options.size&&(u=this.options.size);if(r>u){h=0,r=u,s=0;while(++h){i=this.get(r--);if(!i.length)break;s+=this.dimension(i);if(s>=y)break}}a=u-h+1,this.options.wrap!="circular"&&a<1&&(a=1),this.inTail&&e&&(o+=this.tail,this.inTail=!1),this.tail=null,this.options.wrap=="circular"||u!=this.options.size||u-h+1<1||(w=t.margin(this.get(u),this.options.vertical?"marginBottom":"marginRight"),s-w>y&&(this.tail=s-y-w));while(n-->a)o+=this.dimension(this.get(n));return this.prevFirst=this.first,this.prevLast=this.last,this.first=a,this.last=u,o},animate:function(n,t){var i,r,u;if(this.locked||this.animating)return;this.animating=!0,i=this,r=function(){i.animating=!1,n==0&&i.list.css(i.lt,0),(i.options.wrap=="both"||i.options.wrap=="last"||i.options.size==null||i.last<i.options.size)&&i.startAuto(),i.buttons(),i.notify("onAfterAnimation")},this.notify("onBeforeAnimation"),this.options.animation&&t!=!1?(u=this.options.vertical?{top:n}:{left:n},this.list.animate(u,this.options.animation,this.options.easing,r)):(this.list.css(this.lt,n+"px"),r())},startAuto:function(n){n!=undefined&&(this.options.auto=n);if(this.options.auto==0)return this.stopAuto();if(this.timer!=null)return;var t=this;this.timer=setTimeout(function(){t.next()},this.options.auto*1e3)},stopAuto:function(){if(this.timer==null)return;clearTimeout(this.timer),this.timer=null},buttons:function(n,t){var n,t,i;(n==undefined||n==null)&&(n=!this.locked&&this.options.size!==0&&(this.options.wrap&&this.options.wrap!="first"||this.options.size==null||this.last<this.options.size),this.locked||this.options.wrap&&this.options.wrap!="first"||this.options.size==null||this.last<this.options.size||(n=this.tail!=null&&!this.inTail)),(t==undefined||t==null)&&(t=!this.locked&&this.options.size!==0&&(this.options.wrap&&this.options.wrap!="last"||this.first>1),this.locked||this.options.wrap&&this.options.wrap!="last"||this.options.size==null||this.first!=1||(t=this.tail!=null&&this.inTail)),i=this,this.buttonNext[n?"bind":"unbind"](this.options.buttonNextEvent,this.funcNext)[n?"removeClass":"addClass"](this.className("jcarousel-next-disabled")).attr("disabled",n?!1:!0),this.buttonPrev[t?"bind":"unbind"](this.options.buttonPrevEvent,this.funcPrev)[t?"removeClass":"addClass"](this.className("jcarousel-prev-disabled")).attr("disabled",t?!1:!0),this.buttonNext.length>0&&(this.buttonNext[0].jcarouselstate==undefined||this.buttonNext[0].jcarouselstate!=n)&&this.options.buttonNextCallback!=null&&(this.buttonNext.each(function(){i.options.buttonNextCallback(i,this,n)}),this.buttonNext[0].jcarouselstate=n),this.buttonPrev.length>0&&(this.buttonPrev[0].jcarouselstate==undefined||this.buttonPrev[0].jcarouselstate!=t)&&this.options.buttonPrevCallback!=null&&(this.buttonPrev.each(function(){i.options.buttonPrevCallback(i,this,t)}),this.buttonPrev[0].jcarouselstate=t)},notify:function(n){var t=this.prevFirst==null?"init":this.prevFirst<this.first?"next":"prev";this.callback("itemLoadCallback",n,t),this.prevFirst!==this.first&&(this.callback("itemFirstInCallback",n,t,this.first),this.callback("itemFirstOutCallback",n,t,this.prevFirst)),this.prevLast!==this.last&&(this.callback("itemLastInCallback",n,t,this.last),this.callback("itemLastOutCallback",n,t,this.prevLast)),this.callback("itemVisibleInCallback",n,t,this.first,this.last,this.prevFirst,this.prevLast),this.callback("itemVisibleOutCallback",n,t,this.prevFirst,this.prevLast,this.first,this.last)},callback:function(t,i,r,u,f,e,o){var h,c,s;if(this.options[t]==undefined||typeof this.options[t]!="object"&&i!="onAfterAnimation")return;h=typeof this.options[t]=="object"?this.options[t][i]:this.options[t];if(!n.isFunction(h))return;c=this;if(u===undefined)h(c,r,i);else if(f===undefined)this.get(u).each(function(){h(c,this,u,r,i)});else for(s=u;s<=f;s++)s===null||s>=e&&s<=o||this.get(s).each(function(){h(c,this,s,r,i)})},create:function(n){return this.format("<li></li>",n)},format:function(t,i){var r=n(t).addClass(this.className("jcarousel-item")).addClass(this.className("jcarousel-item-"+i));return r.attr("jcarouselindex",i),r},className:function(n){return n+" "+n+(this.options.vertical?"-vertical":"-horizontal")},dimension:function(i,r){var u=i.jquery!=undefined?i[0]:i,e=this.options.vertical?u.offsetHeight+t.margin(u,"marginTop")+t.margin(u,"marginBottom"):u.offsetWidth+t.margin(u,"marginLeft")+t.margin(u,"marginRight"),f;return r==undefined||e==r?e:(f=this.options.vertical?r-t.margin(u,"marginTop")-t.margin(u,"marginBottom"):r-t.margin(u,"marginLeft")-t.margin(u,"marginRight"),n(u).css(this.wh,f+"px"),this.dimension(u))},clipping:function(){return this.options.vertical?this.clip[0].offsetHeight-t.intval(this.clip.css("borderTopWidth"))-t.intval(this.clip.css("borderBottomWidth")):this.clip[0].offsetWidth-t.intval(this.clip.css("borderLeftWidth"))-t.intval(this.clip.css("borderRightWidth"))},index:function(n,t){return t==undefined&&(t=this.options.size),Math.round(((n-1)/t-Math.floor((n-1)/t))*t)+1}}),t.extend({defaults:function(t){return n.extend(i,t||{})},margin:function(i,r){var u,f,o,e;if(!i)return 0;return u=i.jquery!=undefined?i[0]:i,r=="marginRight"&&n.browser.safari?(f={display:"block",float:"none",width:"auto"},n.swap(u,f,function(){o=u.offsetWidth}),f.marginRight=0,n.swap(u,f,function(){e=u.offsetWidth}),e-o):t.intval(n.css(u,r))},intval:function(n){return n=parseInt(n),isNaN(n)?0:n}})})(jQuery)
