/**
 *
 * hoverzoom - A simple jQuery plugin that provides a fast and accessible zoom effect
 *
 * Copyright (c) 2010, MensUnderwearStore.com
 * Copyright (c) 2008-2009, Pierre Bertet, http://www.pierrebertet.net
 * Licensed under the MIT (MIT-LICENSE.txt) License.
 *
 */
;(function(){jQuery.fn.hoverzoom=function(oSettings){var oSettings=jQuery.extend({preload:true,customPreviewElt:'<div class="hoverzoom-preview"></div>'},oSettings||{});return this.each(function(){var jLink=jQuery(this);var jThumb=jLink.find('img:first');var jPreview=jQuery(oSettings.customPreviewElt);var jPreload;var jCursor;var jLoading;var bIsLoaded=false;var hover=false;var nWidthRatio,nHeightRatio,nPreviewWidth,nPreviewHeight,nImgWidth,nImgHeight,nThumbWidth,nThumbHeight,nCursorWidth,nCursorHeight,nThumbPosX,nThumbPosY,nMouseX,nMouseY=0;jLink.after(jPreview);jPreview.hide();if(typeof jPreview.stickyfloat==='function'){jPreview.stickyfloat({offsetY:15});};if(typeof jPreview.bgiframe==='function'){jPreview.bgiframe();};jLink.click(preventClick).attr('title','');jQuery(window).ready(function(){jThumb.css({display:'block'}).load(updatePreloadSrc);jLink.css({position:'relative',display:'block',overflow:'hidden'}).hover(function(){if(!oSettings.preload)initLoading();nThumbPosX=jThumb.offset().left;nThumbPosY=jThumb.offset().top;hover=true;jThumb.addClass('hoverzoom-hover');jLink.bind('mousemove',onMouseMove);if(bIsLoaded){jCursor.show();jPreview.stop(true,true).fadeIn('fast');}else{jLoading.show();};},function(){hover=false;jLink.unbind('mousemove',onMouseMove);jThumb.removeClass('hoverzoom-hover');if(jCursor)jCursor.hide();if(jPreview)jPreview.stop(true,true).fadeOut('fast');jLoading.hide();});if(oSettings.preload)initLoading();});var skipEvent=false;var skipEventTimerID=null;var skipEventTimerDuration=1;function onMouseMove(e){nMouseX=e.pageX||nMouseX;nMouseY=e.pageY||nMouseY;if(hover&&bIsLoaded){if(!skipEvent){var nPreviewPosX=-(((nMouseX-nThumbPosX)*nWidthRatio)-(nPreviewWidth/2));var nPreviewPosY=-(((nMouseY-nThumbPosY)*nHeightRatio)-(nPreviewHeight/2));var nCursorPosX=nMouseX-nThumbPosX-(nCursorWidth/2);var nCursorPosY=nMouseY-nThumbPosY-(nCursorHeight/2);if(nPreviewPosX>0){nPreviewPosX=nCursorPosX=0;}else if(nPreviewPosX<(nPreviewWidth-nImgWidth)){nPreviewPosX=-nImgWidth+nPreviewWidth;nCursorPosX=Math.ceil(nThumbWidth-nCursorWidth);};if(nPreviewPosY>0){nPreviewPosY=nCursorPosY=0;}else if(nPreviewPosY<(nPreviewHeight-nImgHeight)){nPreviewPosY=-nImgHeight+nPreviewHeight;nCursorPosY=Math.ceil(nThumbHeight-nCursorHeight);};if(jLoading.is(':visible'))jLoading.hide();jPreview.css({backgroundPosition:nPreviewPosX+'px '+nPreviewPosY+'px'});if(jPreview.is(':hidden'))jPreview.show();jCursor.css({left:nCursorPosX+'px',top:nCursorPosY+'px'});if(jCursor.is(':hidden'))jCursor.show();if(jQuery.browser.msie&&jQuery.browser.version>=8){skipEvent=true;};}else{if(!skipEventTimerID){skipEventTimerID=window.setTimeout(function(){skipEvent=false;skipEventTimerID=null;},skipEventTimerDuration);};};};};function preventClick(){if(bIsLoaded&&hover){this.blur();return false;};};function updatePreloadSrc(){bIsLoaded=false;jPreload.attr('src',getPreviewImgSrc());};function getPreviewImgSrc(){var preview_imgsrc='/mm5/graphics/missing_photo-600.gif';var imagenum=0;var jLinkHref=jLink.attr('href');if(jLinkHref.indexOf('?')!=-1){var tmp_hashes=jLinkHref.slice(jLinkHref.indexOf('?')+1).split('&');for(var i=0;i<tmp_hashes.length;i++){hash=tmp_hashes[i].split('=');if(hash[0]=='image'){imagenum=hash[1];break;};};};if(product_zoomphotos&&product_zoomphotos[imagenum]){preview_imgsrc=product_zoomphotos[imagenum];};return preview_imgsrc;};function initLoading(){jLink.css({position:'relative'});if(!jLoading){jLoading=jQuery('<span class="hoverzoom-loading"></span>').css({position:'absolute',top:0,left:0}).appendTo(jLink).hide();if(typeof jLoading.stickyfloat==='function'){jLoading.stickyfloat();};};var preview_imgsrc=getPreviewImgSrc();jPreload=jQuery('<img class="hoverzoom-preload" src="'+preview_imgsrc+'" style="position:absolute;top:0;left:-9999px;visibility:hidden;" />').load(function(){jPreview.css({background:'url("'+jPreload.attr('src')+'") no-repeat'});if(!jCursor){jCursor=jQuery('<span class="hoverzoom-cursor"></span>').css({position:'absolute',top:0,left:0}).appendTo(jLink).hide();};if(jThumb.width()&&jThumb.height()){nThumbWidth=jThumb.width();nThumbHeight=jThumb.height();};if(jPreview.width()&&jPreview.height()){nPreviewWidth=jPreview.width();nPreviewHeight=jPreview.height();};if(jPreload.width()&&jPreload.height()){nImgWidth=jPreload.width();nImgHeight=jPreload.height();};nWidthRatio=nImgWidth/nThumbWidth;nHeightRatio=nImgHeight/nThumbHeight;nCursorWidth=nPreviewWidth/nWidthRatio;nCursorHeight=nPreviewHeight/nHeightRatio;jCursor.css({width:nCursorWidth+'px',height:nCursorHeight+'px'});bIsLoaded=true;if(hover){jLink.trigger('mousemove');};}).appendTo('body');};function destruct(){jPreview.remove();jPreload.remove();jCursor.remove();jLoading.remove();jLink.unbind('click',preventClick).unbind('hover');jThumb.unbind('load',updatePreloadSrc);};});};})(jQuery);