﻿var FancyZoom=new Class({Implements:[Options,Events],options:{scaleImg:false,directory:"images/fancyzoom",width:null,height:null,max:1024},initialize:function(a,b){this.setOptions(b);if(!$("zoom"))this.setup();this.element=$(a);if(this.element){this.content_div=$(this.element.get("href").match(/#(.+)$/)[1]).setStyles({display:"block",position:"absolute",visibility:"hidden"});this.element.store("fancy",this);this.element.addEvent("click",FancyZoom.show)}},setup:function(){var a=Browser.Engine.trident?"gif":"png",b='<table id="zoom_table" style="border-collapse:collapse; width:100%; height:100%;">                  <tbody>                    <tr>                      <td class="tl" style="background:url('+this.options.directory+"/tl."+a+') 0 0 no-repeat; width:20px height:20px; overflow:hidden;" />                      <td class="tm" style="background:url('+this.options.directory+"/tm."+a+') 0 0 repeat-x; height:20px; overflow:hidden;" />                      <td class="tr" style="background:url('+this.options.directory+"/tr."+a+') 100% 0 no-repeat; width:20px height:20px; overflow:hidden;" />                    </tr>                    <tr>                      <td class="ml" style="background:url('+this.options.directory+"/ml."+a+') 0 0 repeat-y; width:20px; overflow:hidden;" />                      <td class="mm" style="background:#fff; vertical-align:top; padding:10px;">                        <div id="zoom_content">                        </div>                      </td>                      <td class="mr" style="background:url('+this.options.directory+"/mr."+a+') 100% 0 repeat-y;  width:20px; overflow:hidden;" />                    </tr>                    <tr>                      <td class="bl" style="background:url('+this.options.directory+"/bl."+a+') 0 100% no-repeat; width:20px height:20px; overflow:hidden;" />                      <td class="bm" style="background:url('+this.options.directory+"/bm."+a+') 0 100% repeat-x; height:20px; overflow:hidden;" />                      <td class="br" style="background:url('+this.options.directory+"/br."+a+') 100% 100% no-repeat; width:20px height:20px; overflow:hidden;" />                    </tr>                  </tbody>                </table>                <a href="#" title="Close" id="zoom_close" style="float:right;position:absolute; top:0; left:0px;">                  <img src="'+this.options.directory+"/closebox."+a+'" alt="Close" style="border:none; margin:0; padding:0;" />                </a>';$(document.body).grab(new Element("div",{id:"zoom",style:"display:none;z-index:200;",html:b}));FancyZoom.showFx=new Fx.Morph($("zoom"),{link:"cancel",onStart:function(b){var a=b.retrieve("fancy");if(a.options.scaleImg){a.content_div.getElements("img").setStyles({width:50,height:"auto"});$("zoom_content").set("html",a.content_div.get("html"));$$("#zoom_content img").tween("width",this.to.width[0].value-60)}else $("zoom_content").set("html","")},onComplete:function(b){FancyZoom.zoomed=true;var a=b.retrieve("fancy");a.loaded=false;if(!a.options.scaleImg)$("zoom_content").set("html",a.content_div.get("html"));if(Browser.Engine.trident)$$("td.ml, td.mm, td.mr").setStyle("height",this.to.height[0].value-60);$("zoom_close").setStyle("display","");FancyZoom.unfixBackgroundsForIE()}});FancyZoom.hideFx=new Fx.Morph($("zoom"),{onStart:function(a){if(!a.retrieve("fancy").scaleImg)$("zoom_content").set({html:"",style:""});$("zoom_close").setStyle("display","none")},onComplete:function(a){FancyZoom.zoomed=false;a.setStyle("display","none");FancyZoom.unfixBackgroundsForIE()}});$("zoom_close").addEvent("click",FancyZoom.hide);$$("html")[0].addEvent("click",function(a){if(!($(a.target).match("#zoom")||$(a.target).getParent("#zoom")))FancyZoom.hide(a)});$(document).addEvent("keyup",function(a){if(a.key=="esc")FancyZoom.hide(a)})}});FancyZoom.zoomed=false;FancyZoom.show=function(b){b.stop();var e=$(b.target).match("a")?b.target:b.target.getParent("a"),a=e.retrieve("fancy"),c=(a.options.width||a.content_div.getWidth())+60,d=(a.options.height||a.content_div.getHeight())+60,d=Math.min(a.options.max,c)/c*d,c=Math.min(a.options.max,c),f=Window.getSize(),h=Window.getScrollTop(),i=Math.max(f.y/2-d/2+h,0),g=f.x/2-c/2;if(!a.loaded){$("zoom").store("curTop",b.page.y);$("zoom").store("curLeft",b.page.x);$("zoom").store("fancy",a);$("zoom").setStyles({position:"absolute",display:"block",opacity:0,top:b.page.y,left:b.page.x,width:1,height:1});a.fireEvent("show",{stop:$empty,target:e,page:b.page},100)}FancyZoom.fixBackgroundsForIE();FancyZoom.showFx.start({opacity:1,top:i,left:g,width:c,height:d})};FancyZoom.hide=function(a){if(!FancyZoom.zoomed)return;a.stop();$("zoom").retrieve("fancy").fireEvent("hide");FancyZoom.fixBackgroundsForIE();FancyZoom.hideFx.start({left:$("zoom").retrieve("curLeft"),top:$("zoom").retrieve("curTop"),width:1,height:1,opacity:0})};FancyZoom.switchBackgroundImagesTo=function(b){$$("#zoom_table td").each(function(a){var c=a.getStyle("background-image").replace(/\.(png|gif|none)\)$/,"."+b+")");a.setStyle("background-image",c)});var a=zoom_close.getElement("img"),c=a.get("src").replace(/\.(png|gif|none)$/,"."+b);a.set("src",c)};FancyZoom.fixBackgroundsForIE=function(){if(Browser.Engine.trident5)FancyZoom.switchBackgroundImagesTo("gif")};FancyZoom.unfixBackgroundsForIE=function(){if(Browser.Engine.trident5)FancyZoom.switchBackgroundImagesTo("png")}
