/**
 * Slideshow - a slideshow <http://www.electricprism.com/aeron/slideshow/> and
 * 		  smoothslideshow <http://smoothslideshow.jondesign.net/> fusion.
 *
 * Copyright (c) 2007 Olmo Maldonado
 * 
 * From version 3.0.3, fixes and enanchements from Djamil Legato
 */
var Slideshow=new Class({version:"3.0.3",options:{captions:true,showTitleCaption:true,classes:["prev","next","active"],duration:[2000,4000],path:"/",navigation:false,pan:100,resize:true,thumbnailre:[/\./,"t."],transition:Fx.Transitions.Sine.easeInOut,type:"fade",zoom:50,loadingDiv:true,removeDiv:true},styles:{caps:{div:{opacity:0,position:"absolute",width:"100%",margin:0,left:0,bottom:0,height:40,background:"#333",color:"#fff",textIndent:0},h2:{color:"red",padding:0,fontSize:"80%",margin:0,margin:"2px 5px",fontWeight:"bold"},p:{padding:0,fontSize:"60%",margin:"2px 5px",color:"#eee"}}},initialize:function(c,b){this.setOptions($merge({onClick:this.onClick.bind(this)},b));if(!this.options.images){return}this.options.pan=this.mask(this.options.pan);this.options.zoom=this.mask(this.options.zoom);this.el=$(c).empty();this.caps={div:new Element("div",{styles:this.styles.caps.div,"class":"captionDiv"}),h2:new Element("h2",{styles:this.styles.caps.h2,"class":"captionTitle"}),p:new Element("p",{styles:this.styles.caps.p,"class":"captionDescription"})};this.fx=[];var a=new ImageLoader(this.el,this.options.images,{loadingDiv:this.options.loadingDiv,onComplete:this.start.bind(this),path:this.options.path,removeDiv:this.options.removeDiv})},start:function(){this.imgs=$A(arguments);this.a=this.imgs[0].clone().set({styles:{display:"block",position:"absolute",left:0,top:0,zIndex:1}}).injectInside(this.el);var a=this.a.getCoordinates();this.height=this.options.height||a.height;this.width=this.options.width||a.width;this.el.setStyles({display:"block",position:"relative",width:this.width});this.el.empty();this.el.adopt((new Element("div",{events:{click:this.onClick.bind(this)},styles:{display:"block",overflow:"hidden",position:"relative",width:this.width,height:this.height}})).adopt(this.a));this.resize(this.a,a);this.b=this.a.clone().setStyle("opacity",0).injectAfter(this.a);this.timer=[0,0];this.navigation();this.direction="left";this.curr=[0,0];$(document.body).adopt(new Element("div",{id:"hiddenDIV",styles:{visibility:"hidden",height:0,width:0,overflow:"hidden",opacity:0}}));this.loader=this.imgs[0];$("hiddenDIV").adopt(this.loader);this.load()},load:function(a){if($time()>this.timer[0]){this.img=(this.curr[1]%2)?this.b:this.a;this.img.setStyles({opacity:0,width:"auto",height:"auto",zIndex:this.curr[1]});var b=this.options.images[this.curr[0]].url;this.img.setStyle("cursor",(b!="#"&&b!="")?"pointer":"default");this.img.setProperties({src:this.loader.src,title:this.loader.title,alt:this.loader.alt});this.resize(this.img,this.loader);if(a){this.img.setStyles({top:0,left:0,opacity:1});this.captions();this.loaded();return}this.captions();this[this.options.type.test(/push|wipe/)?"swipe":"kens"]();this.loaded()}else{this.timeout=this.load.delay(100,this)}},loaded:function(){if(this.ul){this.ul.getElements("a[name]").each(function(b,c){b[(c===this.curr[0]?"add":"remove")+"Class"](this.options.classes[2])},this)}this.direction="left";this.curr[0]=(this.curr[0]+1)%this.imgs.length;this.curr[1]++;this.timer[0]=$time()+this.options.duration[1]+(this.options.type.test(/fade|push|wipe/)?this.options.duration[0]:0);this.timer[1]=$time()+this.options.duration[0];this.loader=this.imgs[this.curr[0]];$("hiddenDIV").empty().adopt(this.loader);this.load()},kens:function(){this.img.setStyles({bottom:"auto",right:"auto",left:"auto",top:"auto"});var a=["left top","right top","left bottom","right bottom"].getRandom().split(" ");a.each(function(d){this.img.setStyle(d,0)},this);var b=this.options.type.test(/zoom|combo/)?this.zoom():{};var c=this.options.type.test(/pan|combo/)?this.pan(a):{};this.fx.push(this.img.effect("opacity",{duration:this.options.duration[0]}).start(1));this.fx.push(this.img.effects({duration:this.options.duration[0]+this.options.duration[1]}).start($merge(b,c)))},zoom:function(){var f=Math.max(this.width/this.loader.width,this.height/this.loader.height);var e=(this.options.zoom==="rand")?Math.random()+1:(this.options.zoom.toInt()/100)+1;var d=Math.ceil(this.loader.height*f);var c=Math.ceil(this.loader.width*f);var b=(d*e).toInt();var a=(c*e).toInt();return{height:[b,d],width:[a,c]}},pan:function(b){var d=this.width-this.img.width,c=this.height-this.img.height;var f=this.options.pan==="rand"?Math.random():Math.abs((this.options.pan.toInt()/100)-1);var h=(d*f).toInt(),g=(c*f).toInt();var a=this.width/this.loader.width>this.height/this.loader.height;var e={};e[b[a?1:0]]=a?[g,c]:[h,d];return e},swipe:function(){var b,d={},c={},a;this.img.setStyles({left:"auto",right:"auto",opacity:1}).setStyle(this.direction,this.width);if(this.options.type==="wipe"){this.fx.push(this.img.effect(this.direction,{duration:this.options.duration[0],transition:this.options.transition}).start(0))}else{b=[this.img,this.curr[1]%2?this.a:this.b];d[this.direction]=[this.width,0];c[this.direction]=[0,-this.width];if(b[1].getStyle(this.direction)==="auto"){a=this.width-b[1].getStyle("width").toInt();b[1].setStyle(this.direction,a);b[1].setStyle(this.direction==="left"?"right":"left","auto");c[this.direction][0]=a}this.fx.push(new Fx.Elements(b,{duration:this.options.duration[0],transition:this.options.transition}).start({"0":d,"1":c}))}},captions:function(a){a=a||this.img;if(!this.options.captions||(!a.title&&!a.alt)){return}this.el.getFirst().adopt(this.caps.div.adopt(this.caps.h2,this.caps.p));(function(){if(this.options.showTitleCaption){this.caps.h2.setHTML(a.title)}this.caps.p.setHTML(a.alt);this.caps.div.setStyle("zIndex",a.getStyle("zIndex")*2||10);this.capsHeight=this.capsHeight||this.options.captionHeight||this.caps.div.offsetHeight;var b=this.caps.div.effects().set({height:0}).start({opacity:0.7,height:this.capsHeight});(function(){b.start({opacity:0,height:0})}).delay(1*(this.options.duration[1]-this.options.duration[0]))}).delay(0.75*(this.options.duration[0]),this)},navigation:function(){if(!this.options.navigation){return}var g,f,d;var e=this.options.navigation.test(/fast/);this.ul=new Element("ul");var b=new Element("li"),c=new Element("a");if(this.options.navigation.test(/arrows/)){this.ul.adopt(b.clone().adopt(c.clone().addClass(this.options.classes[0]).addEvent("click",function(){if(e||$time()>this.timer[1]){$clear(this.timeout);if(e){this.fx.each(function(a){a.time=0;a.options.duration=0;a.stop(true)})}this.direction="right";this.curr[0]=(this.curr[0]<2)?this.imgs.length-(2-this.curr[0]):this.curr[0]-2;this.timer=[0];this.loader=this.imgs[this.curr[0]];this.load(e)}}.bind(this))))}if(this.options.navigation.test(/arrows\+|thumbnails/)){for(g=0,f=this.imgs.length;g<f;g++){d=c.clone().setProperty("name",g);if(this.options.navigation.test(/thumbnails/)){d.setStyle("background-image","url("+this.imgs[g].src+")")}if(g===0){c.className=this.options.classes[2]}d.onclick=function(a){if(e||$time()>this.timer[1]){$clear(this.timeout);if(e){this.fx.each(function(h){h.time=0;h.options.duration=0;h.stop(true)})}this.direction=(a<this.curr[0]||this.curr[0]===0)?"right":"left";this.curr[0]=a;this.timer=[0];this.loader=this.imgs[this.curr[0]];this.load(e)}}.pass(g,this);this.ul.adopt(b.clone().adopt(d))}}if(this.options.navigation.test(/arrows/)){this.ul.adopt(b.clone().adopt(c.clone().addClass(this.options.classes[1]).addEvent("click",function(){if(e||$time()>this.timer[1]){$clear(this.timeout);if(e){this.fx.each(function(a){a.time=0;a.options.duration=0;a.stop(true)})}this.timer=[0];this.load(e)}}.bind(this))))}this.ul.injectInside(this.el)},onClick:function(c){c=new Event(c).stop();var d=this.curr[1]%this.imgs.length;var b=this.curr[1]==0?1:d==0?this.imgs.length:d;var a=this.options.images[b-1].url;if(a=="#"||a==""){return}window.location.href=a},mask:function(c,d,b,a){if(c!="rand"){c=c.toInt();c=isNaN(c)||c<b||c>a?d:c}return c},resize:function(a,c){var b;if(this.options.resize){b=Math.max(this.width/c.width,this.height/c.height);a.setStyles({height:Math.ceil(c.height*b),width:Math.ceil(c.width*b)})}}});Slideshow.implement(new Options);var ImageLoader=new Class({version:".5-olmo-ver",options:{loadingDiv:false,loadingPrefix:"loading images: ",loadingSuffix:"",path:"",removeDiv:true},initialize:function(a,c,b){this.setOptions(b);this.loadingDiv=(this.options.loadingDiv)?$(a):false;this.images=[];this.index=0;this.total=c.length;if(this.loadingDiv){this.loadingText=new Element("div").injectInside(this.loadingDiv);this.progressBar=new Element("div",{styles:{width:100,padding:1,margin:"5px auto",textAlign:"left",overflow:"hidden",border:"solid 1px #333"}}).adopt(new Element("div",{styles:{width:"0%",height:10,backgroundColor:"#333"}})).injectInside(this.loadingDiv)}this.loadImages.delay(200,this,[c])},reset:function(){this.index=0;if(this.loadingDiv){this.progressBar.getFirst().setStyle("width","0%");this.loadingText.setHTML(this.options.loadingPrefix)}},loadImages:function(c){var a=this;this.reset();this.images=[];this.sources=c;this.timer=setInterval(this.loadProgress.bind(this),100);for(var d=0,b=c.length;d<b;d++){this.images[d]=new Asset.image((this.sources[d].path||this.options.path)+this.sources[d].file,{title:a.sources[d].title,alt:a.sources[d].desc,onload:function(){a.index++},onerror:function(){a.index++;a.images.splice(d,1)},onabort:function(){a.index++;a.images.splice(d,1)}})}},loadProgress:function(){if(this.loadingDiv){this.loadingText.setHTML(this.options.loadingPrefix+this.index+"/"+this.total+this.options.loadingSuffix);this.progressBar.getFirst().setStyle("width",(!this.total?0:this.index.toInt()*100/this.total)+"%")}if(this.index>=this.total){this.loadComplete()}},loadComplete:function(){$clear(this.timer);if(this.loadingDiv){this.loadingText.setHTML("Loading Complete");if(this.options.removeDiv){this.loadingText.empty().remove();this.progressBar.empty().remove()}}this.fireEvent("onComplete",this.images)},cancel:function(){$clear(this.timer)}});ImageLoader.implement(new Events,new Options);
