
var Zoomy=Class.create({initialize:function(element,options){this.options={appearDuration:0.5,closeButton:false,draggable:false,hideCaption:false}
Object.extend(this.options,options||{});this.element=$(element);this.showEvent=this.showZoom.bindAsEventListener(this);this.element.observe("click",this.showEvent);},showZoom:function(event){Event.stop(event);var bg=this.element.getStyle('background-image');if(Prototype.Browser.Opera){imgUrl=bg.substring(5,bg.length-2);}
else{imgUrl=bg.substring(4,bg.length-1);}
imgUrl=imgUrl.replace(/\"/gi,'');var zClose=(this.options.draggable||this.options.closeButton)?'<span id="close"></span>':'';var zHref=this.element.readAttribute('href');var zTitle=this.element.readAttribute('title');var zLink=(zHref!=''&&zHref!='#')?' - <a href="'+zHref+'">'+zHref+'</a>':'';var zContent=(zTitle!='')?'<p>'+zTitle+zLink+zClose+'</p>':'';var zContent=(!this.options.hideCaption)?'<p>'+zTitle+zLink+zClose+'</p>':'';if($('zoomy')){$("zoomy").remove();}
$(document.body).insert('<div id="zoomy">'+zContent+'<img src="'+imgUrl+'" alt="'+zTitle+'" /></div>');var globalDim=document.viewport.getDimensions();var wWidth=globalDim.width;var wHeight=globalDim.height;var zoomDim=$('zoomy').getDimensions();var zWidth=zoomDim.width;var zHeight=zoomDim.height;var zoom_x,zoom_y;var Yscroll=document.viewport.getScrollOffsets().top;var mouse_x=Event.pointerX(event);var mouse_y=event.pageY-document.viewport.getScrollOffsets().top;if((event.pageX-(zWidth/2)>=0)&&(event.pageX+(zWidth/2)<=wWidth)){zoom_x=event.pageX-(zWidth/2);}else if(event.pageX+(zWidth/2)>wWidth){zoom_x=wWidth-zWidth;}else{zoom_x=0;}
if(mouse_y-(zHeight/2)>=0){if(mouse_y+(zHeight/2)>wHeight){zoom_y=wHeight-zHeight+Yscroll;}
else{zoom_y=mouse_y-(zHeight/2)+Yscroll;}}
else{zoom_y=0+Yscroll;}
$('zoomy').setStyle({top:zoom_y+'px',left:zoom_x+'px',display:'none'});new Effect.Appear('zoomy',{duration:this.options.appearDuration});this.unZoom();if(this.options.draggable){new Draggable('zoomy');}},hideZoom:function(){$("zoomy").remove();},unZoom:function(){$('zoomy').observe('click',function(event){if(event.element()==$('zoomy').down('a')){window.open($('zoomy').down('a').readAttribute('href'));Event.stop(event);}
if(event.element()==$('close')){this.hideZoom();}
if((!this.options.closeButton)&&(!this.options.draggable)){this.hideZoom();}}.bindAsEventListener(this));}});