// Slideshow for Mootools 1.0. Copyright (c) 2008 Aeron Glemann, <http://electricprism.com/aeron>, MIT Style License.

var Slideshow=new Class({initialize:function(slideshow,props){this.props=Object.extend({captions:false,classes:['prev','next','active'],duration:[2000,4000],height:false,hu:'/',images:[],navigation:false,pan:100,resize:true,thumbnailre:[/\./,'t.'],transition:Fx.Transitions.sineInOut,type:'fade',width:false,zoom:50},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.slideshow=$(slideshow);this.a=img=$E('img',this.slideshow);this.fx=[];this.start();},start:function(){this.slideshow.setHTML('');this.a.setStyles({display:'block',position:'absolute',left:'0px',top:'0px',zIndex:1});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.div=new Element('div');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'});}
this.b=this.a.clone();this.b.setStyle('opacity',0);this.b.injectAfter(this.a);if(this.props.navigation){this.navigation();}
if($type(this.props.captions)=='array'){this.p=new Element('p');this.p.setHTML(this.props.captions[0]);this.p.injectInside(this.slideshow);}
this.direction='left';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();},preload:function(fast){if(this.loader.complete&&((new Date).getTime()>this.timer[0])){img=(this.curr[1]%2)?this.b:this.a;img.setStyles({height:'auto',opacity:0,width:'auto',zIndex:this.curr[1]});img.setProperty('src',this.loader.src);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',opacity:1,top:'0px'});if($type(this.props.captions)=='array'){this.p.setHTML(this.props.captions[this.curr[0]]).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(this.props.type.test(/push|wipe/)){img.setStyles({left:'auto',right:'auto'});img.setStyle(this.direction,this.width+'px');img.setStyle('opacity',1);if(this.props.type=='wipe'){fx=new Fx.Style(img,this.direction,{duration:this.props.duration[0],transition:this.props.transition});fx.start(this.width,0);this.fx.push(fx);}
else{arr=[img,((this.curr[1]%2)?this.a:this.b)];p0={};p0[this.direction]=[this.width,0];p1={};p1[this.direction]=[0,(this.width*-1)];if(arr[1].getStyle(this.direction)=='auto'){x=this.width-arr[1].getStyle('width').toInt();arr[1].setStyle(this.direction,x+'px');arr[1].setStyle(((this.direction=='left')?'right':'left'),'auto');p1[this.direction]=[x,(this.width*-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({bottom:'auto',left:'auto',right:'auto',top:'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);}
this.direction='left';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();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;},navigation:function(){this.ul=new Element('ul');if(this.props.navigation.test(/arrows/)){li=new Element('li');a=new Element('a');a.addClass(this.props.classes[0]);a.onclick=function(){if(this.props.navigation.test(/fast/)||(new Date).getTime()>this.timer[1]){$clear(this.timeout);if(this.props.navigation.test(/fast/)){this.fx.each(function(fx){fx.time=fx.options.duration=0;fx.stop(true);});}
this.direction='right';this.curr[0]=(this.curr[0]<2)?this.props.images.length-(2-this.curr[0]):this.curr[0]-2;this.timer=[0];this.loader=new Image();this.loader.src=this.props.hu+this.props.images[this.curr[0]].trim();this.preload(this.props.navigation.test(/fast/));}}.bind(this);a.injectInside(li);li.injectInside(this.ul);}
if(this.props.navigation.test(/arrows\+|thumbnails/)){for(i=0;i<this.props.images.length;i++){li=new Element('li');a=new Element('a');a.name=i;if(this.props.navigation.test(/thumbnails/)){src=this.props.hu+this.props.images[i].trim().replace(this.props.thumbnailre[0],this.props.thumbnailre[1]);a.setStyle('background-image','url('+src+')');}
if(i==0){a.className=this.props.classes[2];}
a.onclick=function(i){if(this.props.navigation.test(/fast/)||(new Date).getTime()>this.timer[1]){$clear(this.timeout);if(this.props.navigation.test(/fast/)){this.fx.each(function(fx){fx.time=fx.options.duration=0;fx.stop(true);});}
this.direction=(i<this.curr[0]||this.curr[0]==0)?'right':'left';this.curr[0]=i;this.timer=[0];this.loader=new Image();this.loader.src=this.props.hu+this.props.images[this.curr[0]].trim();this.preload(this.props.navigation.test(/fast/));}}.pass(i,this);a.appendText(i+1);a.injectInside(li);li.injectInside(this.ul);}}
if(this.props.navigation.test(/arrows/)){li=new Element('li');a=new Element('a');a.addClass(this.props.classes[1]);a.onclick=function(){if(this.props.navigation.test(/fast/)||(new Date).getTime()>this.timer[1]){$clear(this.timeout);if(this.props.navigation.test(/fast/)){this.fx.each(function(fx){fx.time=fx.options.duration=0;fx.stop(true);});}
this.timer=[0];this.preload(this.props.navigation.test(/fast/));}}.bind(this);a.injectInside(li);li.injectInside(this.ul);}
this.ul.injectInside(this.slideshow);}});