Object.extend(String.prototype, {ensureEndsWith:function(A) {return this.endsWith(A) ? this : this + A},px:function() {return this.ensureEndsWith("px")}});
Object.extend(Number.prototype, {px:function() {return this.toString().px()}});
var Window = {size:function() {
    var C = window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth);
    var B = window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight);
    var A = window.pageXOffset || (window.document.documentElement.scrollLeft || window.document.body.scrollLeft);
    var D = window.pageYOffset || (window.document.documentElement.scrollTop || window.document.body.scrollTop);
    return{width:C,height:B,x:A,y:D}
}};
var FancyZoomBox = {directory:"/images",zooming:false,setup:false,init:function(C) {
    if (FancyZoomBox.setup) {return }
    FancyZoomBox.setup = true;
    var E = navigator.userAgent.match(/MSIE\s(\d)+/);
    if (E) {
        var B = parseInt(E[1]);
        Prototype.Browser["IE" + B.toString()] = true;
        Prototype.Browser.ltIE7 = (B < 7) ? true : false
    }
    var D = '<div id="zoom" style="display:none;">                   <table id="zoom_table" style="border-collapse:collapse; width:100%; height:100%;">                     <tbody>                       <tr>                         <td class="tl" style="background:url(' + FancyZoomBox.directory + '/tl.png) 0 0 no-repeat; width:20px; height:20px; overflow:hidden;" />                         <td class="tm" style="background:url(' + FancyZoomBox.directory + '/tm.png) 0 0 repeat-x; height:20px; overflow:hidden;" />                         <td class="tr" style="background:url(' + FancyZoomBox.directory + '/tr.png) 100% 0 no-repeat; width:20px; height:20px; overflow:hidden;" />                       </tr>                       <tr>                         <td class="ml" style="background:url(' + FancyZoomBox.directory + '/ml.png) 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(' + FancyZoomBox.directory + '/mr.png) 100% 0 repeat-y;  width:20px; overflow:hidden;" />                       </tr>                       <tr>                         <td class="bl" style="background:url(' + FancyZoomBox.directory + '/bl.png) 0 100% no-repeat; width:20px; height:20px; overflow:hidden;" />                         <td class="bm" style="background:url(' + FancyZoomBox.directory + '/bm.png) 0 100% repeat-x; height:20px; overflow:hidden;" />                         <td class="br" style="background:url(' + FancyZoomBox.directory + '/br.png) 100% 100% no-repeat; width:20px; height:20px; overflow:hidden;" />                       </tr>                     </tbody>                   </table>                   <a href="#" title="Close" id="zoom_close" style="position:absolute; top:0; left:0;">                     <img src="' + FancyZoomBox.directory + '/closebox.png" alt="Close" style="border:none; margin:0; padding:0;" />                   </a>                 </div>';
    var A = $("fancy-zoom-insert-point");
    A.insert(D);
    FancyZoomBox.zoom = $("zoom");
    FancyZoomBox.zoom_table = $("zoom_table");
    FancyZoomBox.zoom_close = $("zoom_close");
    FancyZoomBox.zoom_content = $("zoom_content");
    FancyZoomBox.zoom_close.observe("click", FancyZoomBox.hide);
    FancyZoomBox.middle_row = $A([$$("td.ml"),$$("td.mm"),$$("td.mr")]).flatten();
    FancyZoomBox.cells = FancyZoomBox.zoom_table.select("td");
    $$("html").first().observe("click", function(H) {
        var G = H.findElement("#zoom"),F = FancyZoomBox.zoom.getStyle("display");
        if (F == "block" && !G) {FancyZoomBox.hide(H)}
    });
    $(document).observe("keyup", function(G) {
        var F = FancyZoomBox.zoom.getStyle("display");
        if (G.keyCode == Event.KEY_ESC && F == "block") {FancyZoomBox.hide(G)}
    });
    if (Prototype.Browser.ltIE7) {FancyZoomBox.switchBackgroundImagesTo("gif")}
},show:function(E) {
    E.stop();
    if (FancyZoomBox.zooming) {return }
    FancyZoomBox.zooming = true;
    var C = E.findElement("a");
    var D = C.content_div;
    var A = (C.zoom_width || D.getWidth()) + 60;
    var I = (C.zoom_height || D.getHeight()) + 60;
    var F = Window.size();
    var B = document.viewport.getScrollOffsets()[1];
    var G = Math.max((F.height / 2) - (I / 2) + B, 0);
    var H = (F.width / 2) - (A / 2);
    FancyZoomBox.curTop = E.pointerY();
    FancyZoomBox.curLeft = E.pointerX();
    FancyZoomBox.moveX = -(FancyZoomBox.curLeft - H);
    FancyZoomBox.moveY = -(FancyZoomBox.curTop - G);
    FancyZoomBox.zoom.hide().setStyle({position:"absolute",top:FancyZoomBox.curTop.px(),left:FancyZoomBox.curLeft.px()});
    new Effect.Parallel([new Effect.Appear(FancyZoomBox.zoom, {sync:true}),new Effect.Move(FancyZoomBox.zoom, {x:FancyZoomBox.moveX,y:FancyZoomBox.moveY,sync:true}),new Effect.Morph(FancyZoomBox.zoom, {style:{width:A.px(),height:I.px()},sync:true,beforeStart:function(J) {
        if (Prototype.Browser.IE) {FancyZoomBox.middle_row.invoke("setStyle", {height:(I - 40).px()})}
        FancyZoomBox.fixBackgroundsForIE()
    },afterFinish:function(J) {
        FancyZoomBox.zoom_content.innerHTML = D.innerHTML;
        FancyZoomBox.unfixBackgroundsForIE();
        FancyZoomBox.zoom_close.show();
        FancyZoomBox.zooming = false
    }})], {duration:0.5})
},hide:function(A) {
    A.stop();
    if (FancyZoomBox.zooming) {return }
    FancyZoomBox.zooming = true;
    new Effect.Parallel([new Effect.Move(FancyZoomBox.zoom, {x:FancyZoomBox.moveX * -1,y:FancyZoomBox.moveY * -1,sync:true}),new Effect.Morph(FancyZoomBox.zoom, {style:{width:"1".px(),height:"1".px()},sync:true,beforeStart:function(B) {
        FancyZoomBox.fixBackgroundsForIE();
        FancyZoomBox.zoom_content.innerHTML = "";
        FancyZoomBox.zoom_close.hide()
    },afterFinish:function(B) {
        FancyZoomBox.unfixBackgroundsForIE();
        FancyZoomBox.zooming = false
    }}),new Effect.Fade(FancyZoomBox.zoom, {sync:true})], {duration:0.5})
},switchBackgroundImagesTo:function(C) {
    FancyZoomBox.cells.each(function(E) {
        var D = E.getStyle("background-image").gsub(/\.(png|gif|none)\)$/, "." + C + ")");
        E.setStyle("background-image: " + D)
    });
    var B = FancyZoomBox.zoom_close.firstDescendant();
    var A = B.readAttribute("src").gsub(/\.(png|gif|none)$/, "." + C);
    B.writeAttribute("src", A)
},fixBackgroundsForIE:function() {if (Prototype.Browser.IE7) {FancyZoomBox.switchBackgroundImagesTo("gif")}},unfixBackgroundsForIE:function() {if (Prototype.Browser.IE7) {FancyZoomBox.switchBackgroundImagesTo("png")}}};
var FancyZoom = Class.create({initialize:function(A) {
    this.options = arguments.length > 1 ? arguments[1] : {};
    FancyZoomBox.init();
    this.element = $(A);
    if (this.element) {
        this.element.content_div = $(this.element.readAttribute("href").gsub(/^#/, ""));
        this.element.content_div.hide();
        this.element.zoom_width = this.options.width;
        this.element.zoom_height = this.options.height;
        this.element.observe("click", FancyZoomBox.show)
    }
}});