var MooFlow=new Class({Implements:[Events,Options],options:{onStart:$empty,onClickView:$empty,onAutoPlay:$empty,onAutoStop:$empty,onRequest:$empty,onResized:$empty,onEmptyinit:$empty,reflection:0.4,heightRatio:0.6,offsetY:0,startIndex:0,interval:3000,factor:115,bgColor:"#000",useCaption:false,useResize:false,useSlider:false,useWindowResize:false,useMouseWheel:true,useKeyInput:false,useViewer:false,navBottom:0},initialize:function(B,A){this.MooFlow=B;this.setOptions(A);this.foc=150;this.factor=this.options.factor;this.offY=this.options.offsetY;this.isFull=false;this.isAutoPlay=false;this.isLoading=false;this.inMotion=false;this.MooFlow.addClass("mf").setStyles({"overflow":"hidden","background-color":this.options.bgColor,"position":"relative","height":this.MooFlow.getSize().x*this.options.heightRatio,"opacity":0});if(this.options.useWindowResize){window.addEvent("resize",this.update.bind(this,"init"))}if(this.options.useMouseWheel||this.options.useSlider){this.MooFlow.addEvent("mousewheel",this.wheelTo.bind(this))}if(this.options.useKeyInput){document.addEvent("keydown",this.keyTo.bind(this))}this.getElements(this.MooFlow)},clearInit:function(){this.fireEvent("emptyinit")},getElements:function(B){this.master={"images":[]};var A=B.getChildren();if(!A.length){this.clearInit();return }$$(A).each(function(C){var D=$H(C.getElement("img").getProperties("src","title","alt","longdesc"));if(C.get("tag")=="a"){D.combine(C.getProperties("href","rel","target"))}this.master["images"].push(D.getClean());C.dispose()},this);this.clearMain()},clearMain:function(){if(this.cap){this.cap.fade(0)}if(this.nav){new Fx.Tween(this.nav,{"onComplete":function(){this.MooFlow.empty();this.createAniObj()}.bind(this)}).start("bottom",-50)}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.aniFx=new Fx.Value({"transition":Fx.Transitions.Expo.easeOut,"link":"cancel","duration":750,onMotion: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().y);this.loader=new Element("div",{"class":"loader"}).inject(this.MooFlow);new Fx.Tween(this.MooFlow,{"duration":800,"onComplete":this.preloadImg.bind(this)}).start("opacity",1)},preloadImg:function(){this.loadedImages=new Asset.images(this.getMooFlowElements("src"),{"onComplete":this.loaded.bind(this),"onProgress":this.createMooFlowElement.bind(this)})},createMooFlowElement:function(A,C){var D=this.getCurrent(C);var B=this.loadedImages[C];D["width"]=B.width;D["height"]=B.height;B.removeProperties("width","height");D["div"]=new Element("div").setStyles({"position":"absolute","display":"none","height":this.MooFlow.getSize().y}).inject(this.MooFlow);D["con"]=new Element("div").inject(D["div"]);if(this.options.startIndex==C){B.setStyles({'vertical-align':'bottom', 'width':'100%', 'height':'50%', 'cursor':'pointer'});B.addEvents({'click': this.viewCallBack.bind(this,C)});}else{B.setStyles({"vertical-align":"bottom","width":"100%","height":"50%"});B.addEvents({"click":this.clickTo.bind(this,C)});}B.inject(D["con"]);new Element("div").reflect({"img":B,"ref":this.options.reflection,"height":D.height,"width":D.width,"color":this.options.bgColor}).setStyles({"width":"100%","height":"50%","background-color":this.options.bgColor}).inject(D["con"]);this.loader.set("text",(A+1)+" / "+this.loadedImages.length)},loaded:function(){this.index=this.options.startIndex;this.iL=this.master.images.length-1;new Fx.Tween(this.loader,{"duration":800,"onComplete":this.createUI.bind(this)}).start("opacity",0)},createUI:function(){this.loader.dispose();if(this.options.useCaption){this.cap=new Element("div").addClass("caption").set("opacity",0).inject(this.MooFlow)}this.nav=new Element("div").addClass("mfNav").setStyle("bottom","-50px");this.autoPlayCon=new Element("div").addClass("autoPlayCon");this.sliderCon=new Element("div").addClass("sliderCon");this.resizeCon=new Element("div").addClass("resizeCon");if(this.options.useAutoPlay){this.autoPlayCon.adopt(new Element("a",{"class":"stop","events":{"click":this.stop.bind(this)}}),new Element("a",{"class":"play","events":{"click":this.play.bind(this)}}))}if(this.options.useSlider){this.sliPrev=new Element("a",{"class":"sliderNext","events":{"click":this.prev.bind(this)}});this.sliNext=new Element("a",{"class":"sliderPrev","events":{"click":this.next.bind(this)}});this.knob=new Element("div",{"class":"knob"});this.slider=new Element("div",{"class":"slider"}).adopt(this.knob);this.sliderCon.adopt(this.sliPrev,this.slider,this.sliNext);this.slider.store("parentWidth",this.sliderCon.getSize().x-this.sliPrev.getSize().x-this.sliNext.getSize().x)}if(this.options.useResize){this.resizeCon.adopt(new Element("a",{"class":"resize","events":{"click":this.setScreen.bind(this)}}))}this.MooFlow.adopt(this.nav.adopt(this.autoPlayCon,this.sliderCon,this.resizeCon));this.showUI()},showUI:function(){if(this.cap){this.cap.fade(1)}this.nav.tween("bottom",this.options.navBottom);this.fireEvent("start");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.glideTo(this.index);this.isLoading=false},setScreen:function(){if(this.isFull=!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);window.removeEvent("resize",this._initResize);delete this.holder,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.fireEvent("resized",this.isFull);this.update()},initResize:function(){this.MooFlow.setStyles({"width":window.getSize().x,"height":window.getSize().y});this.update()},getCurrent:function(A){return this.master.images[$chk(A)?A:this.index]},loadJSON:function(A){if(!A||this.isLoading){return }this.isLoading=true;new Request.JSON({"onComplete":function(B){if($chk(B)){this.master=B;this.clearMain();this.fireEvent("request",B)}}.bind(this)},this).get(A)},loadHTML:function(A,B){if(!A||!B||this.isLoading){return }this.isLoading=true;new Request.HTML({"onSuccess":function(D,F,E){var C=new Element("div",{"html":E}).getChildren(B);this.getElements(C);this.fireEvent("request",C)}.bind(this)},this).get(A)},flowStart:function(){this.inMotion=true},flowComplete:function(){this.inMotion=false},viewCallBack:function(A){if(this.index!=A||this.inMotion){return }var C=$H(this.getCurrent());var B={};B["coords"]=C.div.getElement("img").getCoordinates();C.each(function(E,D){if($type(E)=="number"||$type(E)=="string"){B[D]=E}},this);this.fireEvent("clickView",B)},prev:function(){if(this.index>0){this.clickTo(this.index-1)}},next:function(){if(this.index<this.iL){this.clickTo(this.index+1)}},stop:function(){$clear(this.autoPlay);this.isAutoPlay=false;this.fireEvent("autoStop")},play:function(){this.autoPlay=this.auto.periodical(this.options.interval,this);this.isAutoPlay=true;this.fireEvent("autoPlay")},auto:function(){if(this.index<this.iL){this.next()}else{if(this.index==this.iL){this.clickTo(0)}}},keyTo:function(A){switch(A.code){case 37:A.stop();this.prev();break;case 39:A.stop();this.next()}},wheelTo:function(A){if(A.wheel>0){this.prev()}if(A.wheel<0){this.next()}A.stop().preventDefault()},clickTo:function(A){if(this.index==A)return;pI=this.index;if(this.sli){this.sli.set(A)}this.glideTo(A)},glideTo:function(A){pI=this.index;this.index=A;this.aniFx.start(this.aniFx.get(),A*-this.foc);if(this.cap){this.cap.set("html",this.getCurrent().title);if(A!=pI){this.loadedImages[A].setStyles({'cursor':'pointer'});this.loadedImages[pI].setStyles({'cursor':'default'});this.loadedImages[A].removeEvents();this.loadedImages[pI].removeEvents();this.loadedImages[A].addEvents({'click': this.viewCallBack.bind(this,A)});this.loadedImages[pI].addEvents({'click': this.clickTo.bind(this,pI)});}}},process:function(x){var z,W,H,zI=this.iL,foc=this.foc,f=this.factor,sz=this.sz,oW=this.oW,offY=this.offY,div,elh,elw;this.master.images.each(function(el){div=el.div.style;elw=el.width;elh=el.height;if(x>-foc*6&&x<foc*6){with(Math){z=sqrt(10000+x*x)+100;H=round((elh/elw*f)/z*sz);W=round(elw*H/elh);if(H>=elw*0.5){W=round(f/z*sz)}div.left=round(((x/z*sz)+sz)-(f*0.5)/z*sz)+"px";div.top=round(oW*0.4-H)+offY+"px"}el.con.style.height=H*2+"px";div.width=W+"px";div.zIndex=x<0?zI++:zI--;div.display="block"}else{div.display="none"}x+=foc})}});var SliderEx=new Class({Extends:Slider,set:function(A){this.step=Math.round(A);this.fireEvent("tick",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("tick",A)}});Fx.Value=new Class({Extends:Fx,compute:function(C,B,A){this.value=Fx.compute(C,B,A);this.fireEvent("motion",this.value);return this.value},get:function(){return this.value||0}});Element.implement({reflect:function(A){i=A.img.clone();if(Browser.Engine.trident){i.style.filter="flipv progid:DXImageTransform.Microsoft.Alpha(opacity=20, style=1, finishOpacity=0, startx=0, starty=0, finishx=0, finishy="+100*A.ref+")";i.setStyles({"width":"100%","height":"100%"});return new Element("div").adopt(i)}else{var D=new Element("canvas").setProperties({"width":A.width,"height":A.height});if(D.getContext){var B=D.getContext("2d");B.save();B.translate(0,A.height-1);B.scale(1,-1);B.drawImage(i,0,0,A.width,A.height);B.restore();B.globalCompositeOperation="destination-out";B.fillStyle=A.color;B.fillRect(0,A.height*0.5,A.width,A.height);var C=B.createLinearGradient(0,0,0,A.height*A.ref);C.addColorStop(1,"rgba(255, 255, 255, 1.0)");C.addColorStop(0,"rgba(255, 255, 255, "+(1-A.ref)+")");B.fillStyle=C;B.rect(0,0,A.width,A.height);B.fill();delete B,C}return D}}});window.addEvent("domready",function(){$$(".MooFlowieze").each(function(A){new MooFlow(A)})})