
var ImageGallery=new Class({Implements:[Options,Events],options:{currentPosition:1,prevLink:null,nextLink:null,currentClass:'current',clickSelector:'a',retrieveAll:$empty},initialize:function(element,options){this.setOptions(options);this.element=element;this.reached={last:false,first:false};this.scroll=new Fx.Scroll(this.element);if(this.element.getElement('li[class='+this.options.currentClass+']'))
this.current=this.element.getElement('li[class='+this.options.currentClass+']');else
this.current=this.element.getElement('li').addClass(this.options.currentClass);this.bounds={changeImage:this.changeImage.bind(this),};this.element.getElements(this.options.clickSelector).addEvent('click',this.bounds.changeImage);this.elements=this.element.getElements('li');this.scrollPos=0;this.scrollHeight=this.element.getScrollSize().y;this.height=this.element.getSize().y;if($(this.options.prevLink))
$(this.options.prevLink).addEvent('click',this.prevNext.bindWithEvent(this,'prev'));if($(this.options.nextLink))
$(this.options.nextLink).addEvent('click',this.prevNext.bindWithEvent(this,'next'));this.checkPrevNext();},changeImage:function(evt){evt.stop();this.current=$(evt.target);if(this.current.get('tag')!='li')
this.current=this.current.getParent('li');this.fireEvent('imageChange',this.current.getElement('img'));this.elements.removeClass('current');this.current.addClass('current');this.checkPrevNext();this.setScroll();},setScroll:function(){var scrollToNth=this.elements.indexOf(this.current)-this.options.currentPosition;if(scrollToNth<=0)scrollToNth=1;this.scrollPos=this.element.getElement('li:nth-child('+scrollToNth+')').offsetTop;if(!this._hasData&&(this.scrollPos>this.scrollHeight-this.height||this.scrollPos==0)){if(this.options.retrieveAll)
this.options.retrieveAll(this.current);}
else this.realScroll();},setData:function(images){try{if(!images)return;this.elements.each(function(el){el.store(':src',el.getElement('img').get('src'));});var after=null;images.each(function(img){if(this.elements.retrieve(':src').contains(img)){this.elements.each(function(element){if(element.retrieve(':src')==img)
after=element;});}
else{var el=(after?after:this.element);var where=(after?'after':'top');after=new Element('li').adopt(new Element('a',{href:img,events:{click:this.bounds.changeImage}}).adopt(new Element('img',{src:img}))).inject(el,where).store(':src',img);}},this);this.scrollHeight=this.element.getScrollSize().y;this.height=this.element.getSize().y;this.elements=this.element.getElements('li');this._hasData=true;this.setScroll();}catch(e){console.log(e);}},realScroll:function(){this.scroll.start(0,this.scrollPos);},checkPrevNext:function(){if(this.options.nextLink)
this.options.nextLink.removeClass('next-disabled');if(this.options.prevLink)
this.options.prevLink.removeClass('prev-disabled');if(this.current==this.element.getLast('li')&&this.options.nextLink)
this.options.nextLink.addClass('next-disabled');else if(this.current==this.elements[0]&&this.options.prevLink)
this.options.prevLink.addClass('prev-disabled');},prevNext:function(evt,type){evt.stop();evt.target=this.current[type=='next'?'getNext':'getPrevious']();if(evt.target)
this.changeImage(evt);},toElement:function(){return this.element;}});