Slideshow=new Class({initialize:function(slideshow,props){this.props=Object.extend({captions:false,injections:false,titles:false,classes:['prev','next','active'],duration:[2000,4000],loops:0,direction:'left',height:false,hu:'/',images:[],navigation:false,pan:100,resize:true,thumbnailre:[/\./,'t.'],transition:Fx.Transitions.sineInOut,type:'fade',width:false,zoom:50,zindex:100},props||{});if(this.props.images.length<=1){return}if(this.props.pan!='rand'){if(isNaN(this.props.pan.toInt())||this.props.pan.toInt()<0||this.props.pan.toInt()>100){this.props.pan=0}}if(this.props.zoom!='rand'){if(isNaN(this.props.zoom.toInt())||this.props.zoom.toInt()<0||this.props.zoom.toInt()>100){this.props.zoom=0}}this.id=slideshow;this.slideshow=$(slideshow);this.a=img=$E('img',this.slideshow);this.fx=[];this.loop=0;this.start();if(this.props.height==false&&this.props.width==false){$E('body').addEvent('onStyleChange',function(){this.restart()}.bind(this))}},start:function(){this.slideshow.setHTML('');this.a.setStyles({display:'block',position:'absolute',zIndex:this.props.zindex});if(this.props.type.test(/push|wipe/)){this.a.setStyle(this.props.direction,'0px')}else{this.a.setStyles({left:'0px',top:'0px'})}this.a.injectInside(this.slideshow);this.fx.each(function(fx){fx.time=fx.options.duration=0;fx.stop(true)});obj=this.a.getCoordinates();this.height=((this.props.height)?this.props.height:obj['height']);this.width=((this.props.width)?this.props.width:obj['width']);this.slideshow.setStyles({display:'block',position:'relative',width:this.width+'px',height:this.height+'px'});this.div=new Element('div');this.div.setProperty('id',this.id+'_1');this.div.setStyles({display:'block',height:(this.height+'px'),overflow:'hidden',position:'relative',width:(this.width+'px')});this.div.injectInside(this.slideshow);this.a.injectInside(this.div);if((this.props.height||this.props.width)&&this.props.resize){dh=this.height/obj['height'];dw=this.width/obj['width'];n=(dw>dh)?dw:dh;this.a.setStyles({height:Math.ceil(obj['height']*n)+'px',width:Math.ceil(obj['width']*n)+'px'})}if($type(this.props.titles)=='array'){this.a.setProperty('title',this.props.titles[0])}this.b=this.a.clone();this.b.setStyles({opacity:0,zIndex:this.props.zindex-1});this.b.injectAfter(this.a);if($type(this.props.captions)=='array'){this.p=new Element('p');this.p.setProperty('id',this.id+'_2');this.p.setHTML(this.props.captions[0]);this.p.injectInside(this.slideshow)}if($type(this.props.injections)=='array'){this.injbefore=new Element('div');this.injbefore.setProperty('id',this.id+'_3');this.injbefore.setStyle('opacity',1);this.injbefore.setHTML(this.props.injections[0][0]);this.injbefore.injectBefore(this.slideshow);this.injafter=new Element('div');this.injafter.setProperty('id',this.id+'_4');this.injafter.setStyle('opacity',1);this.injafter.setHTML(this.props.injections[0][1]);this.injafter.injectAfter(this.slideshow)}this.curr=[1,1];this.timer=(this.timer)?[0]:[(new Date).getTime()+this.props.duration[1],0];this.loader=new Image();this.loader.src=this.props.hu+this.props.images[this.curr[0]].trim();this.preload(true)},preload:function(fast){if(this.loader.complete&&((new Date).getTime()>this.timer[0])){img=(this.curr[1]%2)?this.b:this.a;img2=(this.curr[1]%2)?this.a:this.b;img.setStyles({height:'auto',opacity:0,width:'auto',zIndex:this.props.zindex});img2.setStyles({zIndex:this.props.zindex-1});img.setProperty('src',this.loader.src);if($type(this.props.titles)=='array'){if(this.props.titles[this.curr[0]]){img.setProperty('title',this.props.titles[this.curr[0]])}}dh=this.height/this.loader.height;dw=this.width/this.loader.width;n=(dw>dh)?dw:dh;if(this.props.resize){img.setStyles({height:Math.ceil(this.loader.height*n)+'px',width:Math.ceil(this.loader.width*n)+'px'})}if(fast){img.setStyles({left:'0px',top:'0px',opacity:1});if($type(this.props.captions)=='array'){this.p.setHTML(this.props.captions[this.curr[0]]).setStyle('opacity',1)}if($type(this.props.injections)=='array'){if(this.props.injections[this.curr[0]]){this.injbefore.setHTML(this.props.injections[this.curr[0]][0]).setStyle('opacity',1);this.injafter.setHTML(this.props.injections[this.curr[0]][1]).setStyle('opacity',1)}}return this.loaded()}this.fx=[];if($type(this.props.captions)=='array'){fn=function(i){if(this.props.captions[i]){this.p.setHTML(this.props.captions[i])}fx=new Fx.Style(this.p,'opacity');fx.start(0,1);this.fx.push(fx)}.pass(this.curr[0],this);fx=new Fx.Style(this.p,'opacity',{onComplete:fn});fx.start(1,0);this.fx.push(fx)}if($type(this.props.injections)=='array'){fn_ib=function(i){if(this.props.injections[i]){this.injbefore.setHTML(this.props.injections[i][0])}fx=new Fx.Style(this.injbefore,'opacity');fx.start(0,1);this.fx.push(fx)}.pass(this.curr[0],this);fn_ia=function(i){if(this.props.injections[i]){this.injafter.setHTML(this.props.injections[i][1])}fx=new Fx.Style(this.injafter,'opacity');fx.start(0,1);this.fx.push(fx)}.pass(this.curr[0],this);fx=new Fx.Style(this.injbefore,'opacity',{onComplete:fn_ib});fx.start(1,0);this.fx.push(fx);fx=new Fx.Style(this.injafter,'opacity',{onComplete:fn_ia});fx.start(1,0);this.fx.push(fx)}if(this.props.type.test(/push|wipe/)){img.setStyles({left:'auto',right:'auto',top:'auto',bottom:'auto'});if(this.props.direction.test(/left|right/)){img.setStyle(this.props.direction,this.width+'px')}if(this.props.direction.test(/top|bottom/)){img.setStyle(this.props.direction,this.height+'px')}img.setStyle('opacity',1);if(this.props.type=='wipe'){fx=new Fx.Style(img,this.props.direction,{duration:this.props.duration[0],transition:this.props.transition});if(this.props.direction.test(/left|right/)){fx.start(this.width,0)}if(this.props.direction.test(/top|bottom/)){fx.start(this.height,0)}this.fx.push(fx)}else{arr=[img,((this.curr[1]%2)?this.a:this.b)];p0={};p1={};if(this.props.direction.test(/left|right/)){p0[this.props.direction]=[this.width,0];p1[this.props.direction]=[0,(this.width*-1)]}if(this.props.direction.test(/top|bottom/)){p0[this.props.direction]=[this.height,0];p1[this.props.direction]=[0,(this.height*-1)]}fx=new Fx.Elements(arr,{duration:this.props.duration[0],transition:this.props.transition});fx.start({'0':p0,'1':p1});this.fx.push(fx)}}else{img.setStyles({left:'auto',right:'auto',top:'auto',bottom:'auto'});arr=['left top','right top','left bottom','right bottom'][this.curr[1]%4].split(' ');arr.each(function(p){img.setStyle(p,0)});zoom=((this.props.type).test(/zoom|combo/))?this.zoom():{};pan=((this.props.type).test(/pan|combo/))?this.pan():{};fx=new Fx.Style(img,'opacity',{duration:this.props.duration[0]});fx.start(0,1);this.fx.push(fx);fx=new Fx.Styles(img,{duration:(this.props.duration[0]+this.props.duration[1]),transition:Fx.Transitions.linear});fx.start(Object.extend(zoom,pan));this.fx.push(fx)}this.loaded()}else{this.timeout=this.preload.delay(100,this)}},loaded:function(){if(this.ul){anchors=$ES('a[name]',this.ul);anchors.each(function(a,i){if(i==this.curr[0]){a.addClass(this.props.classes[2])}else{a.removeClass(this.props.classes[2])}},this)}if((this.curr[0]==0)&&(this.props.loops>0)){this.loop++}this.curr[0]=(this.curr[0]==this.props.images.length-1)?0:this.curr[0]+1;this.curr[1]++;this.timer[0]=(new Date).getTime()+this.props.duration[1]+((this.props.type.test(/fade|push|wipe/))?this.props.duration[0]:0);this.timer[1]=(new Date).getTime()+this.props.duration[0];this.loader=new Image();this.loader.src=this.props.hu+this.props.images[this.curr[0]].trim();if((this.props.loops==0)||((this.props.loops>0)&&(this.loop<this.props.loops))){this.preload()}},zoom:function(){z=(this.props.zoom=='rand')?Math.random()+1:(this.props.zoom.toInt()/100.0)+1;eh=Math.ceil(this.loader.height*n);ew=Math.ceil(this.loader.width*n);sh=parseInt(eh*z);sw=parseInt(ew*z);return{height:[sh,eh],width:[sw,ew]}},pan:function(){p=(this.props.pan=='rand')?Math.random():Math.abs((this.props.pan.toInt()/100.0)-1);ex=(this.width-img.width);ey=(this.height-img.height);sx=parseInt(ex*p);sy=parseInt(ey*p);obj={};if(dw>dh){obj[arr[1]]=[sy,ey]}else{obj[arr[0]]=[sx,ex]}return obj},restart:function(){img_src=this.a.getProperty('src');img_alt=this.a.getProperty('alt');this.slideshow.setHTML('<img src="'+img_src+'" alt="'+img_alt+'" />');this.a=img=$E('img',this.slideshow);this.start()}});
