(
function
($) {
$.fn.jqueryzoom =
function
(options) {
var
settings = {
xzoom: 200,
yzoom: 200,
offset: 10,
position:
"right"
,
lens: 1,
preload: 1
};
if
(options)
{
$.extend(settings, options);
}
var
noalt = '';
$(this).hover(
function
() {
var
imageLeft = $(this).offset().left;
var
imageTop = $(this).offset().top;
var
imageWidth = $(this).children('img').get(0).offsetWidth;
var
imageHeight = $(this).children('img').get(0).offsetHeight;
noalt = $(this).children(
"img"
).attr(
"alt"
);
var
bigimage = $(this).children(
"img"
).attr(
"jqimg"
);
$(this).children(
"img"
).attr(
"alt"
, '');
if
($(
"p.zoomp"
).get().length == 0)
{
$(this).after(
"<p class='zoomp'><img class='bigimg' src='"
+ bigimage +
"'/></p>"
);
$(this).append(
"<p class='jqZoomPup'> </p>"
);
}
if
(settings.position ==
"right"
)
{
if
(imageLeft + imageWidth + settings.offset + settings.xzoom > screen.width)
{
leftpos = imageLeft - settings.offset - settings.xzoom;
}
else
{
leftpos = imageLeft + imageWidth + settings.offset;
}
}
else
{
leftpos = imageLeft - settings.xzoom - settings.offset;
if
(leftpos < 0)
{
leftpos = imageLeft + imageWidth + settings.offset;
}
}
$(
"p.zoomp"
).css({ top: imageTop, left: leftpos });
$(
"p.zoomp"
).width(settings.xzoom);
$(
"p.zoomp"
).height(settings.yzoom);
$(
"p.zoomp"
).show();
if
(!settings.lens)
{
$(this).css('cursor', 'crosshair');
}
$(document.body).mousemove(
function
(e) {
mouse =
new
MouseEvent(e);
/*$(
"p.jqZoomPup"
).hide();*/
var
bigwidth = $(
".bigimg"
).get(0).offsetWidth;
var
bigheight = $(
".bigimg"
).get(0).offsetHeight;
var
scaley = 'x';
var
scalex = 'y';
if
(isNaN(scalex) | isNaN(scaley))
{
var
scalex = (bigwidth / imageWidth);
var
scaley = (bigheight / imageHeight);
$(
"p.jqZoomPup"
).width((settings.xzoom) / scalex);
$(
"p.jqZoomPup"
).height((settings.yzoom) / scaley);
if
(settings.lens)
{
$(
"p.jqZoomPup"
).css('visibility', 'visible');
}
}
xpos = mouse.x - $(
"p.jqZoomPup"
).width() / 2 - imageLeft;
ypos = mouse.y - $(
"p.jqZoomPup"
).height() / 2 - imageTop;
if
(settings.lens)
{
xpos = (mouse.x - $(
"p.jqZoomPup"
).width() / 2 < imageLeft) ? 0 : (mouse.x + $(
"p.jqZoomPup"
).width() / 2 > imageWidth + imageLeft) ? (imageWidth - $(
"p.jqZoomPup"
).width() - 2) : xpos;
ypos = (mouse.y - $(
"p.jqZoomPup"
).height() / 2 < imageTop) ? 0 : (mouse.y + $(
"p.jqZoomPup"
).height() / 2 > imageHeight + imageTop) ? (imageHeight - $(
"p.jqZoomPup"
).height() - 2) : ypos;
}
if
(settings.lens)
{
$(
"p.jqZoomPup"
).css({ top: ypos, left: xpos });
}
scrolly = ypos;
$(
"p.zoomp"
).get(0).scrollTop = scrolly * scaley;
scrollx = xpos;
$(
"p.zoomp"
).get(0).scrollLeft = (scrollx) * scalex;
});
},
function
() {
$(this).children(
"img"
).attr(
"alt"
, noalt);
$(document.body).unbind(
"mousemove"
);
if
(settings.lens)
{
$(
"p.jqZoomPup"
).remove();
}
$(
"p.zoomp"
).remove();
});
count
= 0;
if
(settings.preload)
{
$('body').append(
"<p style='display:none;' class='jqPreload"
+
count
+
"'>sdsdssdsd</p>"
);
$(this).each(
function
() {
var
imagetopreload = $(this).children(
"img"
).attr(
"jqimg"
);
var
content = jQuery('p.jqPreload' +
count
+ '').html();
jQuery('p.jqPreload' +
count
+ '').html(content + '<img src=\"' + imagetopreload + '\">');
});
}
}
})(jQuery);
function
MouseEvent(e) {
this.x = e.pageX;
this.y = e.pageY;
}