var MorphList=new Class({Implements:[Events,Options],options:{bg:{'class':'background','html':'<div class="inner"></div>'},morph:{'link':'cancel'}},initialize:function(menu,options){var that=this;this.setOptions(options);this.menu=$(menu);this.menuitems=this.menu.getChildren();this.menuitems.addEvents({mouseenter:function(){that.morphTo(this);},mouseleave:function(){that.morphTo(that.current);},click:function(ev){that.click(ev,this);}});this.bg=new Element('li',this.options.bg).inject(this.menu).fade('hide').set('morph',this.options.morph);this.setCurrent(this.menu.getElement('.current'));},click:function(ev,item){this.setCurrent(item,true);this.fireEvent('click',[ev,item]);},setCurrent:function(el,effect){if(el && ! this.current){this.bg.set('styles',{left:el.offsetLeft,width:el.offsetWidth,height:el.offsetHeight,top:el.offsetTop});(effect)?this.bg.fade('in'):this.bg.fade('show');}if(this.current) this.current.removeClass('current');if(el) this.current=el.addClass('current');return this;},morphTo:function(to){if(! this.current) return false;this.bg.morph({left:to.offsetLeft,top:to.offsetTop,width:to.offsetWidth,height:to.offsetHeight});this.fireEvent('morph',to);return this;}});var BarackSlideshow=new Class({Extends:MorphList,options:{auto:true,autostart:'1',autointerval:4000,transition:'fade',tween:{duration:400}},initialize:function(menu,images,loader,options){this.parent(menu,options);this.images=$(images);this.imagesitems=this.images.getChildren().fade('hide');$(loader).fade('in');new Asset.images(this.images.getElements('img').map(function(el){return el.setStyle('display','none').get('src');}),{onComplete:function(){this.loaded=true;$(loader).fade('out');if(this.current) this.show(this.menuitems.indexOf(this.current));else if(this.options.auto && this.options.autostart) this.progress();}.bind(this)});if($type(this.options.transition) !='function') this.options.transition=$lambda(this.options.transition);},auto:function(){if(! this.options.auto) return false;$clear(this.autotimer);this.autotimer=this.progress.delay(this.options.autointerval,this);},click:function(ev,item){this.parent(ev,item);new Event(ev).stop();this.show(this.menuitems.indexOf(item));$clear(this.autotimer);},show:function(index){if(! this.loaded) return;var image=this.imagesitems[index];if(image==this.curimage) return;image.set('tween',this.options.tween).dispose().inject(this.curimage||this.images.getFirst(),this.curimage?'after':'before').fade('hide');image.getElement('img').setStyle('display','block');var trans=this.options.transition.run(null,this).split('-');switch(trans[0]){case 'slide':var dir=$pick(trans[1],'left');var prop=(dir=='left'||dir=='right')?'left':'top';image.fade('show').setStyle(prop,image['offset'+(prop=='left'?'Width':'Height')] *((dir=='bottom'||dir=='right')?1:-1)).tween(prop,0);break;case 'fade':image.fade('in');break;}image.get('tween').chain(function(){this.auto();this.fireEvent('show',image);}.bind(this));this.curimage=image;this.setCurrent(this.menuitems[index]);this.morphTo(this.menuitems[index]);return this;},progress:function(){var curindex=this.imagesitems.indexOf(this.curimage);this.show((this.curimage &&(curindex+1<this.imagesitems.length))?curindex+1:0);}});
