var HCMAGallery=new Class({initialImage:0,currentImage:null,slideshowDelay:5000,initialize:function(element,attachment_identifiers){this.container=$(element);this.container.empty();var image_urls=attachment_identifiers.map(function(element){return element[0]});this['images']=Asset.images(image_urls,{onProgress:this.imageLoaded.bind(this)});this.imageLinks=attachment_identifiers.map(function(element){return element[1]});this.nav=this.createNav(this['images'].length);if(this.nav){this.container.adopt(this.nav);this.navAnimation=new Fx.Morph(this.nav,{duration:1250,link:'cancel',transition:'elastic:out'})}if(this['images'].length>1)this.startSlideshow()},toggleSlideshow:function(){if(this.slideshowInterval){this.stopSlideshow()}else{this.nextImage();this.startSlideshow()}},stopSlideshow:function(){$clear(this.slideshowInterval);delete this.slideshowInterval;this.playPauseButton.removeClass('playing');this.playPauseButton.addClass('paused')},startSlideshow:function(){this.slideshowInterval=this.nextImage.periodical(this.slideshowDelay,this);this.playPauseButton.addClass('playing');this.playPauseButton.removeClass('paused')},handleKey:function(e){if(e.key=='left'){this.prevImage();e.preventDefault()}else if(e.key=='right'){this.nextImage();e.preventDefault()}},imageLoaded:function(total,index){this['images'][index].setStyle('opacity',0).inject(this.container,'top');if(this.imageLinks[index]){this['images'][index].setStyle('cursor','pointer');this['images'][index].addEvent('click',this.visitUrl.pass(index,this))}this['images'][index].store('animation',new Fx.Morph(this['images'][index],{duration:850,transition:'quad:in:out'}));if(index==this.initialImage){this.goToImage(index,false);this.setGalleryHeight(index);this.container.fireEvent('redraw')}},setGalleryHeight:function(imageIndex){var size=this['images'][imageIndex].getSize();this.container.setStyle('height',size['y'])},goToImage:function(index,animate){if(index>=this['images'].length||index<0)return;if(!this['images'][index].retrieve('animation'))return;if($type(animate)==false)animate=true;if($type(this.currentImage)!=false){var oldImage=this['images'][this.currentImage].setStyles({'zIndex':1})}this.currentImage=index;this['images'][this.currentImage].setStyles({'zIndex':2,'opacity':animate?0:1,'display':'block'}).inject(this.nav||this.container,this.nav?'before':'top');if(oldImage)oldImage.inject(this['images'][this.currentImage],'before');if(animate){var animation=this['images'][this.currentImage].retrieve('animation');animation.start({opacity:1})}},createNav:function(length){if(length<=1)return;var navContainer=new Element('div',{'class':'navigation'});var navControls=new Element('div',{'class':'navigationControls'});this.previousButton=new Element('a',{'class':'previous',html:'Previous',href:'#',events:{click:function(e){this.stopSlideshow();this.prevImage();e.preventDefault()}.bindWithEvent(this)}});this.nextButton=new Element('a',{'class':'next',html:'Next',href:'#',events:{click:function(e){this.stopSlideshow();this.nextImage();e.preventDefault()}.bindWithEvent(this)}});this.playPauseButton=new Element('a',{'class':'playPause playing',html:'Play/Pause',href:'#',events:{click:function(e){this.toggleSlideshow();e.preventDefault()}.bindWithEvent(this)}});navControls.adopt(this.previousButton,this.playPauseButton,this.nextButton);navContainer.adopt(navControls);return navContainer},visitUrl:function(index){window.location.href=this.imageLinks[index]},prevImage:function(){if(this.currentImage==0){this.goToImage(this['images'].length-1)}else{this.goToImage(this.currentImage-1)}},nextImage:function(){if(this.currentImage==(this['images'].length-1)){this.goToImage(0)}else{this.goToImage(this.currentImage+1)}}});