/* Copyright (C) 2007 - 2011 YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */

var SlideShow=new Class({getOptions:function(){return{effect:"fade",duration:2E3,transition:Fx.Transitions.linear,direction:"right",color:false,wait:5E3,loop:false,thumbnails:false,thumbnailCls:"outline",backgroundSlider:false,loadingCls:"loading",onClick:false}},initialize:function(a,b,e){this.setOptions(this.getOptions(),e);this.container=$(a);this.container.setStyles({position:"relative",overflow:"hidden"});this.options.onClick&&this.container.addEvent("click",function(){this.options.onClick(this.imageLoaded)}.bind(this));
this.imagesHolder=(new Element("div")).setStyles({position:"absolute",overflow:"hidden",top:this.container.getStyle("height"),left:0,width:"0px",height:"0px",display:"none"}).injectInside(this.container);if($type(b)=="string"&&!this.options.thumbnails){var d=[];$$("."+b).each(function(c){d.push(c.src);c.injectInside(this.imagesHolder)},this);this.images=d}else if($type(b)=="string"&&this.options.thumbnails){d=[];var f=[];this.thumbnails=$$("."+b);this.thumbnails.each(function(c,g){f.push(c.href);
d.push(c.getElement("img"));c.href="javascript:;";c.addEvent("click",function(){this.stop();this.play(g)}.bind(this,c,g))},this);this.images=f;this.thumbnailImages=d;if(this.options.backgroundSlider){this.bgSlider=new BackgroundSlider(this.thumbnailImages,{mouseOver:false,duration:this.options.duration,className:this.options.thumbnailCls,padding:{top:0,right:-2,bottom:-2,left:0}});this.bgSlider.set(this.thumbnailImages[0])}}else this.images=b;this.loading=(new Element("div")).addClass(this.options.loadingCls).setStyles({position:"absolute",
top:0,left:0,zIndex:3,display:"none",width:this.container.getStyle("width"),height:this.container.getStyle("height")}).injectInside(this.container);this.oldImage=(new Element("div")).setStyles({position:"absolute",overflow:"hidden",top:0,left:0,opacity:0,width:this.container.getStyle("width"),height:this.container.getStyle("height")}).injectInside(this.container);this.newImage=this.oldImage.clone();this.newImage.injectInside(this.container);this.timer=0;this.image=-1;this.imageLoaded=0;this.stopped=
true;this.animating=this.started=false},load:function(){$clear(this.timer);this.loading.setStyle("display","block");this.image++;var a=this.images[this.image];delete this.imageObj;doLoad=true;this.imagesHolder.getElements("img").each(function(b){if(b.src==this.images[this.image]){this.imageObj=b;this.add=doLoad=false;this.show()}},this);if(doLoad){this.add=true;this.imageObj=new Asset.image(a,{onload:this.show.bind(this)})}},show:function(){this.add&&this.imageObj.injectInside(this.imagesHolder);
this.newImage.setStyles({zIndex:1,opacity:0});var a=this.newImage.getElement("img");a?a.replaceWith(this.imageObj.clone()):this.imageObj.clone().injectInside(this.newImage);this.imageLoaded=this.image;this.loading.setStyle("display","none");if(this.options.thumbnails)if(this.options.backgroundSlider){a=this.thumbnailImages[this.image];this.bgSlider.move(a);this.bgSlider.setStart(a)}else this.thumbnails.each(function(b,e){b.removeClass(this.options.thumbnailCls);e==this.image&&b.addClass(this.options.thumbnailCls)},
this);this.effect()},wait:function(){this.timer=this.load.delay(this.options.wait,this)},play:function(a){if(this.stopped){if(a>-1)this.image=a-1;if(this.image<this.images.length){this.stopped=false;this.started?this.next():this.load();this.started=true}}},stop:function(){$clear(this.timer);this.stopped=true},next:function(a){var b=true;if(a&&this.stopped)b=false;if(this.animating)b=false;if(b){this.cloneImage();$clear(this.timer);if(this.image<this.images.length-1)a?this.wait():this.load();else if(this.options.loop){this.image=
-1;a?this.wait():this.load()}else this.stopped=true}},previous:function(){this.image=this.imageLoaded==0?this.images.length-2:this.imageLoaded-2;this.next()},cloneImage:function(){var a=this.oldImage.getElement("img");a?a.replaceWith(this.imageObj.clone()):this.imageObj.clone().injectInside(this.oldImage);this.oldImage.setStyles({zIndex:0,top:0,left:0,opacity:1});this.newImage.setStyles({opacity:0})},effect:function(){this.animating=true;this.effectObj=this.newImage.effects({duration:this.options.duration,
transition:this.options.transition});var a=["fade","wipe","slide"],b=["top","right","bottom","left"];if(this.options.effect=="fade")this.fade();else if(this.options.effect=="wipe"){this.options.direction=="random"?this.setup(b[Math.floor(Math.random()*4)]):this.setup(this.options.direction);this.wipe()}else if(this.options.effect=="slide"){this.options.direction=="random"?this.setup(b[Math.floor(Math.random()*4)]):this.setup(this.options.direction);this.slide()}else if(this.options.effect=="random"){a=
a[Math.floor(Math.random()*3)];if(a!="fade"){b=b[Math.floor(Math.random()*4)];this.options.direction=="random"?this.setup(b):this.setup(this.options.direction)}else this.setup();this[a]()}},setup:function(a){if(a=="top"){this.top=-this.container.getStyle("height").toInt();this.left=0;this.topOut=this.container.getStyle("height").toInt();this.leftOut=0}else if(a=="right"){this.top=0;this.left=this.container.getStyle("width").toInt();this.topOut=0;this.leftOut=-this.container.getStyle("width").toInt()}else if(a==
"bottom"){this.top=this.container.getStyle("height").toInt();this.left=0;this.topOut=-this.container.getStyle("height").toInt();this.leftOut=0}else if(a=="left"){this.top=0;this.left=-this.container.getStyle("width").toInt();this.topOut=0;this.leftOut=this.container.getStyle("width").toInt()}else this.leftOut=this.topOut=this.left=this.top=0},fade:function(){this.effectObj.start({opacity:[0,1]});this.resetAnimation.delay(this.options.duration+90,this);this.stopped||this.next.delay(this.options.duration+
100,this,true)},wipe:function(){this.oldImage.effects({duration:this.options.duration,transition:this.options.transition}).start({top:[0,this.topOut],left:[0,this.leftOut]});this.effectObj.start({top:[this.top,0],left:[this.left,0],opacity:[1,1]},this);this.resetAnimation.delay(this.options.duration+90,this);this.stopped||this.next.delay(this.options.duration+100,this,true)},slide:function(){this.effectObj.start({top:[this.top,0],left:[this.left,0],opacity:[1,1]},this);this.resetAnimation.delay(this.options.duration+
90,this);this.stopped||this.next.delay(this.options.duration+100,this,true)},resetAnimation:function(){this.animating=false}});SlideShow.implement(new Options);SlideShow.implement(new Events);

