
jQuery.noConflict()
var featuredimagezoomer={loadinggif:'/resourcesspinningred.gif',magnifycursor:'pointer',dsetting:{magnifiersize:[200,200]},isContained:function(m,e){var e=window.event||e
var c=e.relatedTarget||((e.type=="mouseover")?e.fromElement:e.toElement)
while(c&&c!=m)try{c=c.parentNode}catch(e){c=m}
if(c==m)
return true
else
return false},showimage:function($,$img,$mag,showstatus){var specs=$img.data('specs')
var coords=$img.data('specs').coords
specs.windimensions={w:$(window).width(),h:$(window).height()}
var magcoords={}
magcoords.left=coords.left+((specs.magpos=="left")?-specs.magsize.w-10:+$img.width()+10)
$mag.css({left:magcoords.left,top:coords.top,'z-index':'5'}).show()
specs.$statusdiv.html('Zoom corrente: '+specs.curpower+'x<div style="font-size:80%">Utilizza la rotellina del mouse per modificare lo Zoom</div>')
if(showstatus)
this.showstatusdiv(specs,200,2000)},hideimage:function($img,$mag,showstatus){var specs=$img.data('specs')
$img.data('mouseisout',true)
$mag.hide()
if(showstatus)
this.hidestatusdiv(specs)},showstatusdiv:function(specs,fadedur,showdur){clearTimeout(specs.statustimer)
specs.$statusdiv.fadeIn(fadedur)
specs.statustimer=setTimeout(function(){featuredimagezoomer.hidestatusdiv(specs)},showdur)},hidestatusdiv:function(specs){specs.$statusdiv.stop(true,true).hide()},moveimage:function($img,$maginner,e){function getboundary(b,val){if(b=="left"){var rb=-specs.imagesize.w*specs.curpower+specs.magsize.w
return(val>0)?0:(val<rb)?rb:val}
else{var tb=-specs.imagesize.h*specs.curpower+specs.magsize.h
return(val>0)?0:(val<tb)?tb:val}}
var specs=$img.data('specs')
var imgcoords=specs.coords
var pagex=(e.pageX||specs.lastpagex),pagey=(e.pageY||specs.lastpagey)
var x=pagex-imgcoords.left,y=pagey-imgcoords.top
var newx=-x*specs.curpower+specs.magsize.w/2
var newy=-y*specs.curpower+specs.magsize.h/2
$maginner.css({left:getboundary('left',newx),top:getboundary('top',newy)})
specs.$statusdiv.css({left:pagex-10,top:pagey+20})
specs.lastpagex=pagex
specs.lastpagey=pagey},magnifyimage:function($img,e,zoomrange){var delta=e.detail?e.detail*(-120):e.wheelDelta
var zoomdir=(delta<=-120)?"out":"in"
var specs=$img.data('specs')
var magnifier=specs.magnifier,od=specs.imagesize,power=specs.curpower
var newpower=(zoomdir=="in")?Math.min(power+1,zoomrange[1]):Math.max(power-1,zoomrange[0])
var nd=[od.w*newpower,od.h*newpower]
magnifier.$image.css({width:nd[0],height:nd[1]})
specs.curpower=newpower
specs.$statusdiv.html('Zoom corrente: '+specs.curpower+'x')
this.showstatusdiv(specs,0,500)
$img.trigger('mousemove')},init:function($,$img,options){var setting=$.extend({},this.dsetting,options)
var $statusdiv=$('<div style="position:absolute;visibility:hidden;left:0;top:0;z-index:6" />').html('<img src="'+this.loadinggif+'" />').appendTo(document.body)
var $magnifier=$('<div class="magnifyarea" style="position:absolute;width:'+setting.magnifiersize[0]+'px;height:'+setting.magnifiersize[1]+'px;left:-10000px;top:-10000px;visibility:hidden;overflow:hidden;border:1px solid black;" />').append('<div style="position:relative;left:0;top:0;" />').appendTo(document.body)
function getspecs($maginner,$bigimage){var magsize={w:$magnifier.width(),h:$magnifier.height()}
var imagesize={w:$img.width(),h:$img.height()}
var power=(setting.zoomrange)?setting.zoomrange[0]:($bigimage.width()/$img.width()).toFixed(5)
$img.data('specs',{$statusdiv:$statusdiv,statustimer:null,magnifier:{$outer:$magnifier,$inner:$maginner,$image:$bigimage},magsize:magsize,magpos:setting.magnifierpos,imagesize:imagesize,curpower:power,coords:getcoords()})}
function getcoords(){var offset=$img.offset()
return{left:offset.left,top:offset.top}}
$img.one('mouseover',function(e){var $maginner=$magnifier.find('div:eq(0)')
var $bigimage=$('<img src="'+(setting.largeimage||$img.attr('src'))+'"/>').appendTo($maginner)
var showstatus=setting.zoomrange&&setting.zoomrange[1]>setting.zoomrange[0]
$img.attr({alt:'',title:''}).css({opacity:0.1})
var imgcoords=getcoords()
$statusdiv.css({left:imgcoords.left+$img.width()/2-$statusdiv.width()/2,top:imgcoords.top+$img.height()/2-$statusdiv.height()/2,visibility:'visible'})
$bigimage.bind('loadevt',function(){$img.css({opacity:1})
$statusdiv.empty().css({border:'1px solid black',background:'#C0C0C0',padding:'4px',font:'bold 13px Arial',opacity:0.8}).hide()
if(setting.zoomrange){var nd=[$img.width()*setting.zoomrange[0],$img.height()*setting.zoomrange[0]]
$bigimage.css({width:nd[0],height:nd[1]})}
getspecs($maginner,$bigimage)
$magnifier.css({display:'none',visibility:'visible'})
if(!$img.data('mouseisout'))
featuredimagezoomer.showimage($,$img,$magnifier,showstatus)
$img.mouseover(function(e){$img.data('specs').coords=getcoords()
if(!featuredimagezoomer.isContained($statusdiv.get(0),e))
featuredimagezoomer.showimage($,$img,$magnifier,showstatus)})
$img.mousemove(function(e){featuredimagezoomer.moveimage($img,$maginner,e)})
featuredimagezoomer.moveimage($img,$maginner,e)
$img.mouseout(function(e){if(!featuredimagezoomer.isContained($statusdiv.get(0),e))
featuredimagezoomer.hideimage($img,$magnifier,showstatus)})
$statusdiv.mouseout(function(e){if(!featuredimagezoomer.isContained($statusdiv.get(0),e)&&e.relatedTarget!=$img.get(0)){featuredimagezoomer.hideimage($img,$magnifier,showstatus)}})
if(setting.zoomrange&&setting.zoomrange[1]>setting.zoomrange[0]){var mousewheelevt=(/Firefox/i.test(navigator.userAgent))?"DOMMouseScroll":"mousewheel"
$img.bind(mousewheelevt,function(e){featuredimagezoomer.magnifyimage($img,e,setting.zoomrange)
e.preventDefault()})}})
if($bigimage.get(0).complete){$bigimage.trigger('loadevt')}
else{$bigimage.bind('load',function(){$bigimage.trigger('loadevt')})}})}}
jQuery.fn.addimagezoom=function(options){var $=jQuery
return this.each(function(){if(this.tagName!="IMG")
return true
var $imgref=$(this)
$imgref.css({cursor:featuredimagezoomer.magnifycursor})
featuredimagezoomer.init($,$imgref,options)})}
