var ReMooz=new Class({Implements:[Events,Options,Chain],options:{caption:true,centered:true,className:null,closer:true,closeOnClick:true,closeOnDblClick:false,container:null,dragging:true,size:false,hideSource:true,loadingOpacity:0.7,margin:20,mode:"zoomer",openOnClick:true,openOnDblClick:false,resize:true,resizeFactor:0.9,resizeLimit:false,resizeOptions:{transition:Fx.Transitions.Back.easeOut,duration:"normal"},shadow:true,tipsLastingTime:3000,type:"image",title:false,content:false,source:false,onLoad:$empty,onOpen:$empty,onOpenEnd:$empty,onClose:$empty,onCloseEnd:$empty,onError:$empty,generateCaption:function(B){if(!$defined(B)){return ;}var D=this.options.title||B.getProperty("alt")||B.getProperty("title");var C=this.options.content;if(!D&&!C){return false;}var A=new Element("h6",{"text":D});return(C)?[A,new Element("p",{"text":C})]:A;},generateElement:$empty},build:function(){this.box=new Element("div",{styles:{display:"none"}}).inject(document.body);this.caption=new Element("div",{className:this.classPrefix+"Caption",opacity:0}).adopt(new Element("div",{className:this.classPrefix+"CaptionBackground",opacity:0.75}),new Element("div",{className:this.classPrefix+"CaptionContent"})).inject(this.box);this.closer=new Element("a",{className:this.classPrefix+"ButtonClose",opacity:0,events:{click:this.close.bind(this)}}).inject(this.box);if(!Browser.Engine.trident||Browser.Engine.trident5){this.shadow=new Element("div",{className:this.classPrefix+"BackgroundWrap",opacity:0}).inject(this.box);["N","NE","E","SE","S","SW","W","NW"].each(function(A){new Element("div",{className:this.classPrefix+"Background "+this.classPrefix+"Background"+A}).inject(this.shadow);},this);}this.body=new Element("div",{className:this.classPrefix+"Body"}).inject(this.box);},close:function(E,H){this.closing=true;this.transition=H;if(this.loading){this.box.set("styles",{display:"none"});}this.fireEvent("onClose");window.removeEvents("keydown");this.box.removeEvents("click");this.box.removeEvents("dblclick");if(this.content){this.content.removeClass(this.classPrefix+"BoxZoomOut");}if(this.drag){this.drag.detach();}var D=this.options.closer?(function(){if(!Browser.Engine.trident){this.closer.set("tween",{duration:"short",onComplete:this.callChain.bind(this)}).fade("out");}else{this.closer.fade("hide");this.callChain();}}).bind(this):this.callChain;var A=this.options.caption&&this.options.type=="image"?(function(){this.caption.set("tween",{duration:"short",onComplete:this.callChain.bind(this)}).fade("out");}).bind(this):this.callChain;var C=(function(){if(!this.options.type.test("image|flash")&&this.content){this.content.destroy();this.content=null;}this.caption.getElement("."+this.classPrefix+"CaptionContent").empty();if(this.shadow){this.shadow.fade(this.options.mode=="zoomer"?"out":"hide");}if(!H&&this.options.mode=="zoomer"){this.box.set("morph",$merge(this.options.resizeOptions,{onComplete:this.callChain.bind(this)})).morph(this.styles);}else{if(!H){this.box.set("tween",{onComplete:this.callChain.bind(this)}).fade("out");}else{this.callChain();}}}).bind(this);var B=(function(){this.box.set("styles",{display:"none"});if(this.content){this.content.destroy();this.content=null;}if(this.element){this.element.fade("show");}this.callChain();}).bind(this);var G=(function(){if(this.options.mode=="tips"&&this.element){this.element.title=this.options.title;}this.element=null;this.fireEvent("onCloseEnd");this.closing=false;this.loading=false;this.opened=false;this.callChain();}).bind(this);var F=this.$chain?!this.$chain.length:true;this.chain(D,A,C,B,G);if(F){this.callChain();}return this;},getElementCoordinates:function(){if(this.element){var C=this.element.getCoordinates();delete C.right;delete C.bottom;}else{var B=this.container.getSize(),A=this.container.getScroll();var C={x:A.x+(B.x/2).toInt(),y:A.y+(B.y/2).toInt(),height:0,width:0};}return C;},initialize:function(C,B){var A=!(B.mode&&B.mode=="tips");this.elements=$(C)||$$(C);if($type((this.elements))=="element"){this.elements=[this.elements];}$extend(B,{centered:B.centered?B.centered:A,closer:B.closer?B.closer:A,dragging:B.dragging?B.dragging:A,hideSource:B.hideSource?B.hideSource:A,resizeOptions:B.resizeOptions?B.resizeOptions:{duration:"short"},type:B.type?B.type:(A?"image":"text")});this.setOptions(B);this.defaultOptions=this.options;this.classPrefix=A?"ReMooz":"Tips";this.container=$(this.options.container)||document;if(this.options.openOnClick){this.elements.each((function(E){var D=(function(F){this.open.delay(1,this,E);return false;}).bind(this);E.addClass(this.classPrefix+"Element");if(this.options.openOnClick&&this.options.type=="image"){E.addClass(this.classPrefix+"BoxZoomIn");}if(this.options.openOnClick){E.addEvent("click",D);}if(this.options.openOnDblClick){E.addEvent("dblclick",D);}}).bind(this));}},move:function(E){var C=this.container.getSize(),B=this.container.getScroll(),D=this.box.getSize();var A={left:(E.page.x-25).limit(B.x+this.options.margin,B.x+C.x-this.options.margin-D.x),top:(E.page.y-D.y-30).limit(B.y+this.options.margin,B.y+C.y-this.options.margin-D.y)};this.box.set("styles",A);},open:function(D,B){if(this.loading&&this.options.mode=="zoomer"){return ;}if(D){if(D.target||D.srcElement){this.e=D;}D=D.target||D.srcElement||D;}if(D&&this.element==D){return ;}else{if(this.loading||this.opened){if(this.closing&&this.transition){this.$chain.pop();}else{this.close(null,true);}this.chain(this.open.pass([D,B],this));if(this.options.mode=="tips"){this.callChain();}return ;}}this.element=D;this.options=this.defaultOptions;try{var A=JSON.decode(this.element.get("rel"));}catch(E){var A={};}this.setOptions(A);this.setOptions(B);if(!["element","flash","iframe","image","text"].contains(this.options.type)){this.fireEvent("onError","Type not defined");return ;}this.loading=true;this.fireEvent("onLoad");if(!this.box){this.build();}var C=[this.classPrefix+"Box",this.classPrefix+"Type"+this.options.type.capitalize(),this.classPrefix+"Engine"+Browser.Engine.name.capitalize(),this.classPrefix+"Engine"+Browser.Engine.name.capitalize()+Browser.Engine.version];if(this.options.className){C.push(this.options.className);}this.styles=$merge(this.getElementCoordinates(),{opacity:this.options.loadingOpacity});this.box.set({className:C.join(" "),styles:$merge(this.styles,{display:""})}).addClass(this.classPrefix+"Loading");this.body.empty();this["open"+this.options.type.capitalize()]();window.addEvent("keydown",(function(F){if(F.key=="esc"){this.close();}}).bind(this));return this;},openElement:function(){this.content=this.options.generateElement(this.element)||$(this.options.source)||$E(this.options.source);if(!this.content){this.fireEvent("onError","Element not defined").close();return ;}this.content.getElements("*").addEvent("click",function(){this.focus();});this.content.inject(this.body);this.zoomRelative();},openFlash:function(){try{this.options.source=this.options.source||this.element.get("href");}catch(B){this.fireEvent("onError","Source not defined").close();return ;}var A=(function(){var C=this.body.getSize();this.content.set({height:C.y,width:C.x}).inject(this.body);this.callChain();}).bind(this);this.content=new Element("object",{data:this.options.source,type:"application/x-shockwave-flash"}).adopt(new Element("param",{name:"wmode",value:"transparent"}));this.zoomRelative();this.chain(A);},openIframe:function(){try{this.options.source=this.options.source||this.element.get("href");}catch(B){this.fireEvent("onError","Source not defined").close();return ;}var A=(function(){this.content.inject(this.body);this.callChain();}).bind(this);this.content=new IFrame({src:this.options.source,height:"100%",width:"100%"});this.zoomRelative();this.chain(A);},openImage:function(){var B=new Image();B.onload=(function(C){B.onload=B.onabort=B.onerror=null;var D={x:B.width,y:B.height};this.content=$(B).inject(this.body);this[(this.options.resize)?"zoomRelative":"zoom"](D);}).bind(this);B.onabort=B.onerror=(function(){B.onload=B.onabort=B.onerror=null;this.fireEvent("onError","File unreachable").close();}).bind(this);try{B.src=this.options.source||this.element.getParent().get("href")||this.element.get("rel")||this.element.get("href")||this.element.get("src");}catch(A){this.fireEvent("onError","Source not defined").close();}if(B&&B.complete&&B.onload){B.onload(true);}},openText:function(){this.options.title=this.options.title||this.element.title;this.content=new Element("span",{text:this.options.title});if(this.element.title){this.element.title=null;}this.content.inject(this.body);this.box.set("styles",{display:"",height:null,width:null});var A=this.content.getSize();this.zoom(A);},zoomRelative:function(C){C=C||this.container.getSize();var D=this.options.resizeLimit;if(!D){D=this.container.getSize();D={x:(D.x*this.options.resizeFactor).toInt(),y:(D.y*this.options.resizeFactor).toInt()};}var A=D&&(C.x>D.x||C.y>D.y);var B=D&&C.x/C.y>D.x/D.y;if(A){C=B?{x:D.x,y:(C.y*D.x/C.x).toInt()}:{x:(C.x*D.y/C.y).toInt(),y:D.y};}return this.zoom(C);},zoom:function(J){J=this.options.size||J;var A=this.container.getSize(),H=this.container.getScroll();if(this.options.mode=="zoomer"){var C=(this.options.centered)?{x:H.x+((A.x-J.x)/2).toInt(),y:H.y+((A.y-J.y)/2).toInt()}:{x:(this.styles.left+(this.options.mode=="zoomer"?(this.styles.width/2)-J.x/2:+J.x-20)).toInt().limit(H.x+this.options.margin,H.x+A.x-this.options.margin-J.x),y:(this.styles.top+(this.options.mode=="zoomer"?(this.styles.height/2)-J.y/2:-J.y-30)).toInt().limit(H.y+this.options.margin,H.y+A.y-this.options.margin-J.y)};}var I={left:this.options.mode=="zoomer"?C.x:null,top:this.options.mode=="zoomer"?C.y:null,width:J.x,height:J.y,opacity:1};this.fireEvent("onOpen");if(this.options.closeOnClick){this.box.addEvent("click",this.close.bind(this));}if(this.options.closeOnDblClick){this.box.addEvent("dblclick",this.close.bind(this));}if(this.options.hideSource&&this.element){this.element.fade("hide");}if(this.options.closeOnClick&&this.options.type=="image"){this.content.addClass(this.classPrefix+"BoxZoomOut");}this.box.set("opacity",0);this.box.removeClass(this.classPrefix+"Loading");if(this.options.mode=="tips"){this.move(this.e);}if(this.shadow&&this.options.shadow){this.shadow.fade("in");}if(this.options.dragging){this.drag=this.drag?this.drag.attach():new Drag.Move(this.box,{onStart:(function(K){this.box.removeEvents("click");}).bind(this),onSnap:(function(){this.box.addClass(this.classPrefix+"BoxDragging");}).bind(this),onComplete:(function(){this.box.removeClass(this.classPrefix+"BoxDragging");if(this.options.closeOnClick){this.box.addEvent.delay(100,this.box,["click",this.close.bind(this)]);}}).bind(this)});}var E=(function(){this.box.set("morph",$merge(this.options.resizeOptions,{onComplete:this.callChain.bind(this)})).morph(I);}).bind(this);var F=this.options.closer?(function(){if(!Browser.Engine.trident){this.closer.set("tween",{duration:"short",onComplete:this.callChain.bind(this)}).fade("in");}else{this.closer.fade("show");this.callChain();}}).bind(this):this.callChain;var G=this.options.caption&&this.options.type=="image"?(function(){var K=this.options.generateCaption.apply(this,[this.element]);if(K){this.caption.getElement("."+this.classPrefix+"CaptionContent").adopt(K);this.caption.set("tween",{duration:"short",onComplete:this.callChain.bind(this)}).fade("in");}else{this.callChain();}}).bind(this):this.callChain;var D=(function(){this.fireEvent("onOpenEnd");this.loading=false;this.opened=true;this.callChain();}).bind(this);var B=this.$chain?!this.$chain.length:true;this.chain(E,F,G,D);if(B){this.callChain();}}});