var Jp_Carousel=new Class({Implements:[Options,Events],container:null,innerContainer:null,targets:[],slideFx:null,currentTarget:null,initialState:!0,timerId:null,pagination:null,immediateLeftClone:null,immediateRightClone:null,options:{duration:1500,fastDuration:400,property:"left",link:"cancel",transition:Fx.Transitions.Linear,updateUrl:!1,goToFirstOnEmpty:!0,period:0,nextLinkClass:"next",previousLinkClass:"previous",pagination:!1,paginationClass:"jp-carousel-pagination",infinite:!1,fullSlide:!1},
initialize:function(a,b){this.setOptions(b);if(this.options.updateUrl)this.options.infinite=!1;(this.innerContainer=$(a))&&this.prepare()},prepare:function(){this.innerContainer.addClass("jp-carousel-inner-container");if(!this.container)this.container=new Element("div",{"class":"jp-carousel"}),this.container.injectAfter(this.innerContainer),this.innerContainer.injectInside(this.container),this.slideFx=new Fx.Tween(this.innerContainer,{duration:this.options.duration,property:this.options.property,
link:this.options.link,transition:this.options.transition,onComplete:function(){this.fireEvent("targetUpdated")}.bind(this)});if(this.options.pagination)this.pagination=new Element("ul",{"class":this.options.paginationClass}),this.pagination.injectInside(this.container.getParent());var a=0;this.innerContainer.getChildren().each(function(b){a+=this.getItemWidth(b);this.addTarget(b)},this);this.options.property=="left"&&this.innerContainer.setStyle("width",a+"px");var b=this.container.getParent(),c=
b.getElement("a."+this.options.nextLinkClass)||b.getElement("."+this.options.nextLinkClass+" a");c&&c.addEvent("click",function(a){a.stop();this.next()}.bindWithEvent(this));(b=b.getElement("a."+this.options.previousLinkClass)||b.getElement("."+this.options.previousLinkClass+" a"))&&b.addEvent("click",function(a){a.stop();this.previous()}.bindWithEvent(this));this.options.infinite&&this.replicate();this.options.updateUrl?(this.checkLocation(!0),this.checkLocation.periodical(250,this)):this.options.goToFirstOnEmpty&&
this.goTo(this.targets[0],!1);this.options.period>0&&(this.start(),this.container.addEvent("mouseenter",function(){this.pause()}.bindWithEvent(this)),this.container.addEvent("mouseleave",function(){this.start()}.bindWithEvent(this)))},addTarget:function(a,b){if(a){var c=a.get("id");this.options.updateUrl&&c&&a.set("id","jp-carousel-"+a.get("id"));this.targets.push(a);this.pagination&&!b&&(c=(new Element("li")).injectInside(this.pagination),(new Element("a",{href:"javascript:;"})).injectInside(c).addEvent("click",
function(a,b){a.stop();this.goTo(b)}.bindWithEvent(this,[a])))}},goTo:function(a,b){typeof a=="string"&&a.indexOf("jp-carousel-")!=0&&this.options.updateUrl&&(a="jp-carousel-"+a);if(a=$(a)){this.fireEvent("targetChange",this);(typeof b=="undefined"||b=="fast")&&this.timerId&&this.resetTimer();this.currentTarget=a;for(var c=0,d=this.innerContainer.getChildren(),e=0;e<d.length;e++){if(d[e]==a)break;this.options.property=="top"?(c-=parseInt(d[e].getSize().y),c-=parseInt(d[e].getStyle("margin-bottom"))):
(c-=parseInt(d[e].getSize().x),c-=parseInt(d[e].getStyle("margin-right")))}d=this._getDuration(b);d>0&&!this.initialState?(this.slideFx.setOptions({duration:d}),this.slideFx.start(c+"px")):this.slideFx.set(c+"px");this.initialState=!1;if(this.pagination){var f=0;this.pagination.getChildren().each(function(a){f==e?a.addClass("on"):a.removeClass("on");f++},this)}}},next:function(a){var b=this.options.fullSlide?this.getNextSlide():this.getNext();this.immediateLeftClone&&b==this.targets[0]&&this.goTo(this.immediateLeftClone,
!1);this.goTo(b,a)},previous:function(a){var b=this.options.fullSlide?this.getPreviousSlide():this.getPrevious(),c=this.getTargetIndex(this.currentTarget);if(this.options.infinite&&(c==0||c<this.getTargetIndex(b)))for(var c=this.innerContainer.getChildren(),d=this.targets.length;d<c.length;d++)if(c[d]==this.currentTarget){this.goTo(c[d+this.targets.length],!1);break}this.goTo(b,a)},getNext:function(){for(var a=0;a<this.targets.length;a++)if(this.targets[a]==this.currentTarget&&a+1<this.targets.length)return this.targets[a+
1];return this.targets[0]},getPrevious:function(){for(var a=0;a<this.targets.length;a++)if(this.targets[a]==this.currentTarget&&a-1>=0)return this.targets[a-1];return this.targets[this.targets.length-1]},getNextSlide:function(){var a=0,b=this.container.getSize().x;this.innerContainer.getSize();for(var c=!1,d=0,e=0,e=0;e<this.targets.length;e++)if(this.targets[e]==this.currentTarget&&(c=!0),c&&(a+=this.getItemWidth(this.targets[e])),a>=b){d=a>b?e:e+1;break}d<0&&(d=this.targets.length-1);d>=this.targets.length&&
(d=0);return this.targets[d]},getPreviousSlide:function(){for(var a=0,b=this.container.getSize().x,c=this.targets[0]==this.currentTarget,d=0,e=this.targets.length-1;e>=0;e--)if(this.targets[e]==this.currentTarget&&(c=!0),c&&(a+=this.getItemWidth(this.targets[e])),a>=b){d=a>b||this.targets[0]==this.currentTarget?e:e-1;break}d>this.targets.length&&(d=0);return this.targets[d]},getTargetIndex:function(a){for(var b=0;b<this.targets.length;b++)if(this.targets[b]==a)return b;return null},checkLocation:function(a){var b=
window.location.toString();if(b.indexOf("#")>=0)(b=b.replace(/[^#]+#/,""))&&"jp-carousel-"+b!=this.currentTarget.get("id")&&this.goTo(b,a);else{b=!1;if(this.currentTarget.get("id")&&(this.currentTarget.get("id")!=this.targets[0].get("id")||!this.options.goToFirstOnEmpty))this.fireEvent("emptyTarget",this),this.options.goToFirstOnEmpty&&(this.goTo(this.targets[0],a),b=!0);if(!b)this.currentTarget=null}},pause:function(){$clear(this.timerId);this.timerId=null},start:function(){this.timerId=this.next.periodical(this.options.period,
this,["cruise"])},resetTimer:function(){this.pause();this.start()},replicate:function(){var a=this.innerContainer.getSize().x,b=Math.floor(this.container.getSize().x/a),b=b?b:1;this.immediateLeftClone=this.immediateRightClone=null;for(var c=1;c<=b;c++)this.targets.each(function(a){a=a.clone().addClass("clone").injectInside(this.innerContainer);if(!this.immediateRightClone)this.immediateRightClone=a},this);for(b*=2;c<=b;c++)for(var d=this.targets.length-1;d>=0;d--){var e=this.targets[d].clone().addClass("clone").inject(this.innerContainer,
"top");if(!this.immediateLeftClone)this.immediateLeftClone=e}this.innerContainer.setStyle("width",a*(b+1))},getItemWidth:function(a){a=$(a);return a.getSize().x+parseInt(a.getStyle("margin-left"))+parseInt(a.getStyle("margin-right"))},_getDuration:function(a){switch(a){case !1:case 0:return 0;case "cruise":return this.options.duration;default:return this.options.fastDuration}}});function createJpCarousel(a,b){$$(a).each(function(a){new Jp_Carousel(a,b)})};
