var Moo_Slideshow=new Class({Implements:[Options],options:{width:450,height:300,captions:true,showTitleCaption:true,captionHeight:25,classes:["prev","next","active"],duration:[2000,8000],path:"",pan:30,resize:true,transition:Fx.Transitions.Expo.easeOut,type:"combo",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:"#fff",padding:0,fontSize:"90%",margin:0,margin:"2px 5px",fontWeight:"bold"},p:{padding:0,fontSize:"60%",margin:"2px 5px",color:"#eee"}}},initialize:function(c,d,b){this.setOptions($merge({onClick:this.onClick.bind(this)},b));if(!d){return}this.options.images=d;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",margin:"0 auto",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.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(new Fx.Tween(this.img,{duration:this.options.duration[0]}).start("opacity",1));this.fx.push(new Fx.Morph(this.img,{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.set("html",a.title)}this.caps.p.set("html",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=new Fx.Morph(this.caps.div).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)},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)})}}});var ImageLoader=new Class({Implements:[Options,Events],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.set("html",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.set("html",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.set("html","Loading Complete");if(this.options.removeDiv){this.loadingText.empty().dispose();this.progressBar.empty().dispose()}}this.fireEvent("onComplete",this.images)},cancel:function(){$clear(this.timer)}});