var SliderEx=new Class({Extends:Slider,set:function(A){this.step=A.limit(0,this.options.steps);this.fireEvent("onTick",this.toPosition(this.step));return this},clickedElement:function(C){var B=this.range<0?-1:1;var A=C.page[this.axis]-this.element.getPosition()[this.axis]-this.half;A=A.limit(-this.options.offset,this.full-this.options.offset);this.step=Math.round(this.min+B*this.toStep(A));this.checkStep();this.fireEvent("onTick",A)}});Fx.TweenEx=new Class({Extends:Fx.Tween,render:function(A,C,B){this.fireEvent("onMotionChange",B[0].value);A.setStyle(C,this.serve(B,this.options.unit))}});Element.implement({reflect:function(A){var D=new Element("img").setProperty("src",A.src);if(Browser.Engine.trident){D.style.filter="flipv progid:DXImageTransform.Microsoft.Alpha(opacity=30, style=1, finishOpacity=0, startx=0, starty=0, finishx=0, finishy="+A.height*0.3+")";D.setStyles({"width":"100%","height":"100%"});return new Element("div").adopt(D)}else{var E=new Element("canvas").setProperties({"width":A.width,"height":A.height});if(E.getContext&&!Browser.Engine.webkit419){var B=E.getContext("2d");B.save();B.translate(0,A.height-1);B.scale(1,-1);B.drawImage(D,0,0,A.width,A.height);B.restore();B.globalCompositeOperation="destination-out";B.fillStyle="#000";B.fillRect(0,A.height*0.5,A.width,A.height);var C=B.createLinearGradient(0,0,0,A.height*0.5);C.addColorStop(1,"rgba(255, 255, 255, 1.0)");C.addColorStop(0,"rgba(255, 255, 255, "+(1-0.3)+")");B.fillStyle=C;B.fillRect(0,0,A.width,A.height)}return E}}});var MooFlow=new Class({Implements:[Events,Options],options:{onStart:Class.empty,onComplete:Class.empty,onCancel:Class.empty,onClickView:Class.empty,onAutoPlay:Class.empty,onAutoStop:Class.empty,reflection:0.5,heightRatio:0.6,startIndex:0,interval:3000,factor:115,bgColor:"#000",stylePath:"MooFlow.css",useCaption:false,useResize:false,useSlider:false,useWindowResize:false,useMouseWheel:false,useKeyInput:false,useViewer:false},initialize:function(B,A){this.MooFlow=B;this.setOptions(A);this.foc=150;this.index=this.options.startIndex;this.factor=this.options.factor;this.isFull=false;this.isAutoPlay=false;this.isLoading=false;this.MooFlow.addClass("mf").setStyles({"overflow":"hidden","background-color":this.options.bgColor,"visibility":"hidden","position":"relative"});if(!$chk($("mfCSS"))){new Asset.css(this.options.stylePath,{id:"mfCSS"})}if(this.options.useWindowResize){window.addEvent("resize",this.update.bind(this,"init"))}if(this.options.useMouseWheel){this.MooFlow.addEvent("mousewheel",this.wheelTo.bind(this))}if(this.options.useKeyInput){document.addEvent("keydown",this.keyTo.bind(this))}this.getElements(this.MooFlow)},getElements:function(B){this.master={"images":[]};var A=B.getChildren();if(A.length<=0){return }$$(A).each(function(D){var C=$H(D.getElement("img").getProperties("src","title","alt","longdesc"));if(D.get("tag")=="a"){C.merge(D.getProperties("href","rel","target"))}C=C.getClean();this.master["images"].push(C)},this);this.clearMain()},loadJSON:function(A){if(!A||this.isLoading){return }this.isLoading=true;new Request.JSON({onComplete:function(B){if($chk(B)){this.master=B;this.index=this.options.startIndex;this.clearMain()}}.bind(this),onFailure:function(){this.isLoading=false;this.fireEvent("onChancel","Can not load JSON-Data!")}.bind(this)},this).get(A)},loadHTML:function(A,B){if(!A||!B||this.isLoading){return }this.isLoading=true;new Request.HTML({onSuccess:function(C,E,D){this.getElements(new Element("div",{html:D}).getChildren(B));this.index=this.options.startIndex}.bind(this),onFailure:function(){this.isLoading=false;this.fireEvent("onChancel","Can not load Remote Images!")}.bind(this)},this).get(A)},clearMain:function(){if(this.nav){new Fx.Tween(this.nav,"bottom",{onComplete:function(){this.nav.dispose();if(this.cap){this.cap.dispose()}this.MooFlow.empty();this.createAniObj()}.bind(this)}).start(-50)}if(this.cap){this.cap.fade(0)}if(!this.nav&&!this.cap){this.MooFlow.empty();this.createAniObj()}},getMooFlowElements:function(B){var A=[];this.master.images.each(function(C){A.push(C[B])});return A},createAniObj:function(){this.aniObj=new Element("div").inject(this.MooFlow);this.aniFx=new Fx.TweenEx(this.aniObj,"left",{transition:Fx.Transitions.Expo.easeOut,link:"cancel",duration:750,onMotionChange:this.process.bind(this),onStart:this.flowStart.bind(this),onComplete:this.flowComplete.bind(this)});this.addLoader()},addLoader:function(){this.MooFlow.store("height",this.MooFlow.getSize().x*this.options.heightRatio);this.MooFlow.setStyle("visibility","visible").addClass("load");new Fx.Tween(this.MooFlow,"height",{duration:800,onComplete:this.preloadImg.bind(this)}).start(this.MooFlow.retrieve("height"))},preloadImg:function(){this.loader=new Element("div").addClass("loader").inject(this.MooFlow);var A=this.getMooFlowElements("src");this.loadedImages=new Asset.images(A,{onComplete:this.loaded.bind(this),onProgress:this.createMooFlowElement.bind(this)})},createMooFlowElement:function(B,E){var D=this.getCurrent(E);D["width"]=this.loadedImages[E].width;D["height"]=this.loadedImages[E].height;var G=new Element("div").setStyles({"position":"absolute","display":"none","height":this.MooFlow.getSize().y});var A=new Element("div").inject(G);var C=new Element("img",{"src":D.src,"styles":{"vertical-align":"bottom","width":"100%","height":"50%"}}).inject(A);var F=new Element("img").reflect({"src":D.src,"ref":this.options.reflection,"height":D.height,"width":D.width}).inject(A).setStyles({"width":"100%","height":"50%","background-color":this.options.bgColor});G.inject(this.MooFlow);C.addEvent("click",this.clickTo.bind(this,E));if(!this.options.useViewer){C.addEvent("dblclick",this.viewCallBack.bind(this,E))}D["div"]=G;D["img"]=C;D["con"]=A;this.loader.set("html",(B+1)+" / "+this.loadedImages.length)},loaded:function(){this.iL=this.master.images.length-1;new Fx.Tween(this.loader,"opacity",{duration:1000,onComplete:this.createUI.bind(this)}).start(0)},createUI:function(){this.MooFlow.removeClass("load");this.loader.dispose();if(this.options.useCaption){this.cap=new Element("div").addClass("caption").set("opacity",0);this.MooFlow.adopt(this.cap)}this.nav=new Element("div").addClass("MooFlowNav").setStyle("bottom","-50px");var D=new Element("div").addClass("autoPlayCon");var F=new Element("div").addClass("sliderCon");var B=new Element("div").addClass("resizeCon");if(this.options.useAutoPlay){var E=new Element("a").addClass("play").addEvent("click",this.play.bind(this));var C=new Element("a").addClass("stop").addEvent("click",this.stop.bind(this));D.adopt(C,E)}if(this.options.useSlider){this.sliPrev=new Element("a").addClass("sliderNext");this.sliNext=new Element("a").addClass("sliderPrev");this.slider=new Element("div").addClass("slider");this.knob=new Element("div").addClass("knob");this.knob.adopt(new Element("div").addClass("knobleft"));this.slider.adopt(this.knob);F.adopt(this.sliPrev,this.slider,this.sliNext);this.slider.store("parentWidth",F.getSize().x-this.sliPrev.getSize().x-this.sliNext.getSize().x)}if(this.options.useResize){var A=new Element("a").addClass("resize");A.addEvent("click",this.setScreen.bind(this));B.adopt(A)}this.nav.adopt(D,F,B);this.MooFlow.adopt(this.nav);this.showUI()},showUI:function(){if(this.cap){this.cap.fade(1)}this.nav.tween("bottom",20);this.fireEvent("onStart");this.update()},update:function(A){if(A=="init"){return }this.oW=this.MooFlow.getSize().x;this.sz=this.oW*0.5;if(this.options.useSlider){this.slider.setStyle("width",this.slider.getParent().getSize().x-this.sliPrev.getSize().x-this.sliNext.getSize().x-1);this.knob.setStyle("width",(this.slider.getSize().x/this.iL));this.sli=new SliderEx(this.slider,this.knob,{steps:this.iL}).set(this.index);this.sli.addEvent("onChange",this.glideTo.bind(this));this.sliNext.addEvent("click",this.next.bind(this));this.sliPrev.addEvent("click",this.prev.bind(this))}this.glideTo(this.index);this.isLoading=false},setScreen:function(){this.isFull=!this.isFull;if(this.isFull){this.holder=new Element("div").inject(this.MooFlow,"after");this.MooFlow.wraps(new Element("div").inject(document.body));this.MooFlow.setStyles({"position":"absolute","z-index":"100","top":"0","left":"0","width":window.getSize().x,"height":window.getSize().y});if(this.options.useWindowResize){this._initResize=this.initResize.bind(this);window.addEvent("resize",this._initResize)}}else{this.MooFlow.wraps(this.holder);delete this.holder;window.removeEvent("resize",this._initResize);this.MooFlow.setStyles({"position":"relative","z-index":"","top":"","left":"","width":"","height":this.MooFlow.retrieve("height")});this.slider.setStyle("width",this.slider.retrieve("parentWidth"))}this.update()},initResize:function(){this.MooFlow.setStyles({"width":window.getSize().x,"height":window.getSize().y});this.update()},getCurrent:function(A){return this.master.images[A||this.index]},flowStart:$empty,flowComplete:$empty,viewCallBack:function(B){if(this.index!=B){return }var C=$H(this.getCurrent());var A={};A["coords"]=C.img.getCoordinates();C.each(function(E,D){if($type(E)=="number"||$type(E)=="string"){A[D]=E}},this);this.fireEvent("onClickView",A)},prev:function(){if(this.index>0){this.clickTo(this.index-1)}},stop:function(){$clear(this.autoPlay);this.isAutoPlay=false;this.fireEvent("onAutoStop")},play:function(){this.autoPlay=this.auto.periodical(this.options.interval,this);this.isAutoPlay=true;this.fireEvent("onAutoPlay")},auto:function(){if(this.index<this.iL){this.next()}else{if(this.index==this.iL){this.clickTo(0)}}},next:function(){if(this.index<this.iL){this.clickTo(this.index+1)}},keyTo:function(A){A=new Event(A);switch(A.code){case 37:A.stop();this.prev();break;case 39:A.stop();this.next()}},wheelTo:function(A){A=new Event(A).stop();var B=A.wheel;if(A.preventDefault){A.preventDefault()}if(B>0){this.prev()}if(B<0){this.next()}},clickTo:function(A){if(this.index==A){return }this.aniFx.cancel();if(this.sli){this.sli.set(A)}this.glideTo(A)},glideTo:function(A){this.index=A;if(this.cap){this.cap.set("html",this.getCurrent().title)}this.aniFx.start(A*-this.foc)},process:function(x){var zI=this.iL,z,W,H,foc=this.foc,f=this.factor,sz=this.sz,oW=this.oW,div;with(Math){this.master.images.each(function(el){div=el.div;if(x>-foc*6&&x<foc*6){z=sqrt(10000+x*x)+100;H=round((el.height/el.width*f)/z*sz);W=round(el.width*H/el.height);if(H>=el.width*0.5){W=round(f/z*sz)}el.con.setStyle("height",H*2+"px");div.setStyle("width",W+"px");div.setStyle("left",round(((x/z*sz)+sz)-(f*0.5)/z*sz)+"px");div.setStyle("top",round(oW*0.4-H)+"px");div.setStyle("z-index",x<0?zI++:zI--);div.setStyle("display","block")}else{div.setStyle("display","none")}x+=foc})}}});window.addEvent("domready",function(){$$(".MooFlowieze").each(function(A){new MooFlow(A)})})