var ProductPreview=Class.create({initialize:function(a,b){this.thumbnailImg=$(a);this.previewOptions=b||{};this.thumbnailImg.observe("mouseover",this.onMouseOver.bindAsEventListener(this));this.thumbnailImg.observe("mouseout",this.onMouseOut.bindAsEventListener(this));this.onMouseMoveHandler=function(c){PreviewWindow.getInstance().followMouse(c.pointerX(),c.pointerY())}.bindAsEventListener(this)},onMouseOver:function(a){this.thumbnailImg.observe("mousemove",this.onMouseMoveHandler);PreviewWindow.getInstance().show(a.pointerX(), a.pointerY(),this.previewOptions)},onMouseOut:function(){this.thumbnailImg.stopObserving("mousemove",this.onMouseMoveHandler);PreviewWindow.getInstance().hide()}}),PreviewWindow=Class.create({initialize:function(){this.windowElement=new Element("div",{id:"tplPreview",style:"display:none; position:absolute;"});this.titleElement=new Element("h2",{id:"tplPreviewTitle"});this.imageElement=new Element("img",{id:"tplPreviewImage"});this.progressBarElement=new Element("div",{id:"tplPreviewProgressBar",style:"display:none;"}); this.progressBarElement.innerHTML="Loading...";var a=new Element("div",{id:"tplPreviewBody"});a.appendChild(this.imageElement);a.appendChild(this.progressBarElement);this.windowElement.appendChild(this.titleElement);this.windowElement.appendChild(a);document.body.appendChild(this.windowElement)},loadPreview:function(a){this.titleElement.innerHTML=a.title;var b=this.imageElement;this.imageElement=new Element("img",{id:"tplPreviewImage",src:a.src,width:a.width,height:a.height});b.replace(this.imageElement); if(!this.imageElement.complete){this.progressBarElement.show();this.imageElement.observe("load",function(){this.progressBarElement.hide()}.bindAsEventListener(this))}Object.extend(this,this.windowElement.getDimensions())},show:function(a,b,c){document.viewport.getDimensions();typeof c=="object"&&this.loadPreview(c);this.followMouse(a,b);this.timerId=function(){this.imageElement.src.length>0&&this.windowElement.show()}.bind(this).delay(0.25)},hide:function(){window.clearTimeout(this.timerId);this.windowElement.hide(); typeof this.height!="undefined"&&this.windowElement.setStyle({top:"-"+this.height+"px",left:"-"+this.width+"px"})},followMouse:function(a,b){var c=0,e=0;e=this.height;c=this.width;var d=Object.extend(document.viewport.getDimensions(),document.viewport.getScrollOffsets());a-=d.left;b-=d.top;if(b+34<(d.height-e)/2){mouseYPos="top";e=b+34}else if(b-34>(d.height+e)/2){mouseYPos="bottom";e=b-34-e}else{mouseYPos="middle";e=(d.height-e)/2}if(mouseYPos!="middle"&&a+34>(d.width-c)/2&&a-34<(d.width+c)/2){mouseXPos= "center";c=(d.width-c)/2}else if(a>d.width/2){mouseXPos="right";c=a-34-c}else{mouseXPos="left";c=a+34}this.windowElement.setStyle({top:e+d.top+"px",left:c+d.left+"px"})}});PreviewWindow.getInstance=function(){if(PreviewWindow.instance==null)PreviewWindow.instance=new PreviewWindow;return PreviewWindow.instance}; function initProductPreview(){for(var a=$$('img[thumbnail="true"]'),b=0;b<a.length;b++)new ProductPreview(a[b].id,{title:a[b].getAttribute("alt"),src:a[b].getAttribute("tooltipimg"),width:a[b].getAttribute("tooltipimgwidth"),height:a[b].getAttribute("tooltipimgheigth")})};