var GoodCarousel=new Class({container:null,inner:null,animate:null,nav:null,data:null,timer:null,ticks:0,options:{width:624,height:282,delay:5100,duration:700,transition:Fx.Transitions.Sine.easeInOut,structure:{header:"h3",data:".carousel-data",link:"p a",img:"img"},data:null},Implements:[Options],initialize:function(container,options){this.setOptions(options);this.container=document.id(container);this.parseData();this.setup();},parseData:function(){var data=[];if(this.options.data==null){this.container.getElements(this.options.structure.data).each(function(el,i){var slide={},link=el.getElement(this.options.structure.link),img=el.getElement(this.options.structure.img);slide.title=el.getElement(this.options.structure.header).get("text");slide.desc=link.get("text");slide.url=link.get("href");slide.img=img.get("src");slide.alt=img.get("title");slide.rel=link.get("rel");slide.index=i;data.push(slide);},this);}
this.data=data;this.container.empty();},setup:function(){function elementize(string){return new Element("div",{html:string}).getFirst();}
this.container.setStyle("width",this.options.width).addClass("carousel");this.inner=new Element("div",{"class":"carousel-inner","styles":{"width":this.options.width,"height":this.options.height}});this.container.grab(this.inner);this.animate=new Element("div",{"class":"carousel-animate","styles":{"width":this.options.width}}).set("tween",{duration:this.options.duration,transition:this.options.transition});this.inner.grab(this.animate);var slides=this.data;this.animate.setStyle("width",this.options.width*slides.length);this.nav=new Element("ul",{"class":"carousel-nav"});this.container.grab(this.nav);slides.each(function(data,i){var biglink_data={url:data.url,img:data.img,height:this.options.height,width:this.options.width,title:data.title,desc:data.desc},biglink=('<a class="carousel-item" href="{url}"><img src="{img}" height="{height}" width="{width}" border="0" /><span class="carousel-item-info"><strong><span>{title}</span></strong><br /><span>{desc}</span></span></a>').substitute(biglink_data);biglink=elementize(biglink);biglink.setStyle("width",this.options.width).set("rel",data.rel);this.animate.grab(biglink);var nav_data={link:data.url,title:data.title},nav=('<li><a id="carousel-link" href="{link}" data="{data}" title="{title}">{title}</a></li>').substitute(nav_data);nav=elementize(nav);nav.store("data",data).setStyle("width",Math.floor(this.options.width/slides.length)).getFirst().set("rel",data.rel);if(i===0){nav.addClass("selected");}
if(i===(slides.length-1)){nav.addClass("last");}
nav.addEvents({"mouseenter":this.events.over.bind(this),"mouseleave":this.events.out.bind(this)});this.nav.grab(nav);},this);this.tick();},tick:function(){var links=this.nav.getElements("li a");links.removeClass("selected").each(function(el,i){if(this.ticks===i){el.addClass("selected");}},this);this.slide();this.ticks++;if(this.ticks>(links.length-1)){this.ticks=0;}
$clear(this.timer);this.timer=this.tick.delay(this.options.delay,this);},events:{over:function(event){var data=event.target.getParent().retrieve("data",{index:0});this.ticks=data.index;this.tick();$clear(this.timer);},out:function(event){this.timer=this.tick.delay(this.options.delay,this);}},slide:function(){this.animate.tween("left",0-(this.ticks*this.options.width));}});
