(function($){var isIE6=($.browser.msie&&$.browser.version<7);var body=$(document.body);var window=$(window);var jqzoompluging_disabled=false;$.fn.jqzoom=function(options){return this.each(function(){var node=this.nodeName.toLowerCase();if(node=='a'){new jqzoom(this,options);}});};jqzoom=function(el,options){var api=null;api=$(el).data("jqzoom");if(api)return api;var obj=this;var settings=$.extend({},$.jqzoom.defaults,options||{});obj.el=el;el.rel=$(el).attr('rel');el.zoom_active=false;el.zoom_disabled=false;el.largeimageloading=false;el.largeimageloaded=false;el.scale={};el.timer=null;el.mousepos={};el.mouseDown=false;$(el).css({'outline-style':'none','text-decoration':'none'});var img=$("img:eq(0)",el);el.title=$(el).attr('title');el.imagetitle=img.attr('title');var zoomtitle=($.trim(el.title).length>0)?el.title:el.imagetitle;var smallimage=new Smallimage(img);var lens=new Lens();var stage=new Stage();var largeimage=new Largeimage();var loader=new Loader();$(el).bind('click',function(e){e.preventDefault();return false;});var zoomtypes=['standard','drag','innerzoom','reverse'];if($.inArray($.trim(settings.zoomType),zoomtypes)<0){settings.zoomType='standard';} $.extend(obj,{create:function(){if($(".zoomPad",el).length==0){el.zoomPad=$('
').addClass('zoomPad');img.wrap(el.zoomPad);} if(settings.zoomType=='innerzoom'){settings.zoomWidth=smallimage.w;settings.zoomHeight=smallimage.h;} if($(".zoomPup",el).length==0){lens.append();} if($(".zoomWindow",el).length==0){stage.append();} if($(".zoomPreload",el).length==0){loader.append();} if(settings.preloadImages||settings.zoomType=='drag'||settings.alwaysOn){obj.load();} obj.init();},init:function(){if(settings.zoomType=='drag'){$(".zoomPad",el).mousedown(function(){el.mouseDown=true;});$(".zoomPad",el).mouseup(function(){el.mouseDown=false;});document.body.ondragstart=function(){return false;};$(".zoomPad",el).css({cursor:'default'});$(".zoomPup",el).css({cursor:'move'});} if(settings.zoomType=='innerzoom'){$(".zoomWrapper",el).css({cursor:'crosshair'});} $(".zoomPad",el).bind('mouseenter mouseover',function(event){img.attr('title','');$(el).attr('title','');el.zoom_active=true;smallimage.fetchdata();if(el.largeimageloaded){obj.activate(event);}else{obj.load();}});$(".zoomPad",el).bind('mouseleave',function(event){obj.deactivate();});$(".zoomPad",el).bind('mousemove',function(e){if(e.pageX>smallimage.pos.r||e.pageXsmallimage.pos.b){lens.setcenter();return false;} el.zoom_active=true;if(el.largeimageloaded&&!$('.zoomWindow',el).is(':visible')){obj.activate(e);} if(el.largeimageloaded&&(settings.zoomType!='drag'||(settings.zoomType=='drag'&&el.mouseDown))){lens.setposition(e);}});var thumb_preload=new Array();var i=0;var thumblist=new Array();thumblist=$('a').filter(function(){var regex=new RegExp("gallery[\\s]*:[\\s]*'"+$.trim(el.rel)+"'","i");var rel=$(this).attr('rel');if(regex.test(rel)){return this;}});if(thumblist.length>0){var first=thumblist.splice(0,1);thumblist.push(first);} thumblist.each(function(){if(settings.preloadImages){var thumb_options=$.extend({},eval("("+$.trim($(this).attr('rel'))+")"));thumb_preload[i]=new Image();thumb_preload[i].src=thumb_options.largeimage;i++;} $(this).click(function(e){if($(this).hasClass('zoomThumbActive')){return false;} thumblist.each(function(){$(this).removeClass('zoomThumbActive');});e.preventDefault();obj.swapimage(this);return false;});});},load:function(){if(el.largeimageloaded==false&&el.largeimageloading==false){var url=$(el).attr('href');el.largeimageloading=true;largeimage.loadimage(url);}},activate:function(e){clearTimeout(el.timer);lens.show();stage.show();},deactivate:function(e){switch(settings.zoomType){case'drag':break;default:img.attr('title',el.imagetitle);$(el).attr('title',el.title);if(settings.alwaysOn){lens.setcenter();}else{stage.hide();lens.hide();} break;} el.zoom_active=false;},swapimage:function(link){el.largeimageloading=false;el.largeimageloaded=false;var options=new Object();options=$.extend({},eval("("+$.trim($(link).attr('rel'))+")"));if(options.smallimage&&options.largeimage){var smallimage=options.smallimage;var largeimage=options.largeimage;$(link).addClass('zoomThumbActive');$(el).attr('href',largeimage);img.attr('src',smallimage);lens.hide();stage.hide();obj.load();}else{alert('ERROR :: Missing parameter for largeimage or smallimage.');throw'ERROR :: Missing parameter for largeimage or smallimage.';} return false;}});if(img[0].complete){smallimage.fetchdata();if($(".zoomPad",el).length==0)obj.create();} function Smallimage(image){var $obj=this;this.node=image[0];this.findborder=function(){var bordertop=0;bordertop=image.css('border-top-width');btop='';var borderleft=0;borderleft=image.css('border-left-width');bleft='';if(bordertop){for(i=0;i<3;i++){var x=[];x=bordertop.substr(i,1);if(isNaN(x)==false){btop=btop+''+bordertop.substr(i,1);}else{break;}}} if(borderleft){for(i=0;i<3;i++){if(!isNaN(borderleft.substr(i,1))){bleft=bleft+borderleft.substr(i,1)}else{break;}}} $obj.btop=(btop.length>0)?eval(btop):0;$obj.bleft=(bleft.length>0)?eval(bleft):0;};this.fetchdata=function(){$obj.findborder();$obj.w=image.width();$obj.h=image.height();$obj.ow=image.outerWidth();$obj.oh=image.outerHeight();$obj.pos=image.offset();$obj.pos.l=image.offset().left+$obj.bleft;$obj.pos.t=image.offset().top+$obj.btop;$obj.pos.r=$obj.w+$obj.pos.l;$obj.pos.b=$obj.h+$obj.pos.t;$obj.rightlimit=image.offset().left+$obj.ow;$obj.bottomlimit=image.offset().top+$obj.oh;};this.node.onerror=function(){alert('Problems while loading image.');throw'Problems while loading image.';};this.node.onload=function(){$obj.fetchdata();if($(".zoomPad",el).length==0)obj.create();};return $obj;};function Loader(){var $obj=this;this.append=function(){this.node=$('
').addClass('zoomPreload').css('visibility','hidden').html(settings.preloadText);$('.zoomPad',el).append(this.node);};this.show=function(){this.node.top=(smallimage.oh-this.node.height())/2;this.node.left=(smallimage.ow-this.node.width())/2;this.node.css({top:this.node.top,left:this.node.left,position:'absolute',visibility:'visible'});};this.hide=function(){this.node.css('visibility','hidden');};return this;} function Lens(){var $obj=this;this.node=$('
').addClass('zoomPup');this.append=function(){$('.zoomPad',el).append($(this.node).hide());if(settings.zoomType=='reverse'){this.image=new Image();this.image.src=smallimage.node.src;$(this.node).empty().append(this.image);}};this.setdimensions=function(){this.node.w=(parseInt((settings.zoomWidth)/el.scale.x)>smallimage.w)?smallimage.w:(parseInt(settings.zoomWidth/el.scale.x));this.node.h=(parseInt((settings.zoomHeight)/el.scale.y)>smallimage.h)?smallimage.h:(parseInt(settings.zoomHeight/el.scale.y));this.node.top=(smallimage.oh-this.node.h-2)/2;this.node.left=(smallimage.ow-this.node.w-2)/2;this.node.css({top:0,left:0,width:this.node.w+'px',height:this.node.h+'px',position:'absolute',display:'none',borderWidth:1+'px'});if(settings.zoomType=='reverse'){this.image.src=smallimage.node.src;$(this.node).css({'opacity':1});$(this.image).css({position:'absolute',display:'block',left:-(this.node.left+1-smallimage.bleft)+'px',top:-(this.node.top+1-smallimage.btop)+'px'});}};this.setcenter=function(){this.node.top=(smallimage.oh-this.node.h-2)/2;this.node.left=(smallimage.ow-this.node.w-2)/2;this.node.css({top:this.node.top,left:this.node.left});if(settings.zoomType=='reverse'){$(this.image).css({position:'absolute',display:'block',left:-(this.node.left+1-smallimage.bleft)+'px',top:-(this.node.top+1-smallimage.btop)+'px'});} largeimage.setposition();};this.setposition=function(e){el.mousepos.x=e.pageX;el.mousepos.y=e.pageY;var lensleft=0;var lenstop=0;function overleft(lens){return el.mousepos.x-(lens.w)/2smallimage.pos.r;} function overtop(lens){return el.mousepos.y-(lens.h)/2smallimage.pos.b;} lensleft=el.mousepos.x+smallimage.bleft-smallimage.pos.l-(this.node.w+2)/2;lenstop=el.mousepos.y+smallimage.btop-smallimage.pos.t-(this.node.h+2)/2;if(overleft(this.node)){lensleft=smallimage.bleft-1;}else if(overright(this.node)){lensleft=smallimage.w+smallimage.bleft-this.node.w-1;} if(overtop(this.node)){lenstop=smallimage.btop-1;}else if(overbottom(this.node)){lenstop=smallimage.h+smallimage.btop-this.node.h-1;} this.node.left=lensleft;this.node.top=lenstop;this.node.css({'left':lensleft+'px','top':lenstop+'px'});if(settings.zoomType=='reverse'){if($.browser.msie&&$.browser.version>7){$(this.node).empty().append(this.image);} $(this.image).css({position:'absolute',display:'block',left:-(this.node.left+1-smallimage.bleft)+'px',top:-(this.node.top+1-smallimage.btop)+'px'});} largeimage.setposition();};this.hide=function(){img.css({'opacity':1});this.node.hide();};this.show=function(){if(settings.zoomType!='innerzoom'&&(settings.lens||settings.zoomType=='drag')){this.node.show();} if(settings.zoomType=='reverse'){img.css({'opacity':settings.imageOpacity});}};this.getoffset=function(){var o={};o.left=$obj.node.left;o.top=$obj.node.top;return o;};return this;};function Stage(){var $obj=this;this.node=$("
");this.ieframe=$('');this.setposition=function(){this.node.leftpos=0;this.node.toppos=0;if(settings.zoomType!='innerzoom'){switch(settings.position){case"left":this.node.leftpos=(smallimage.pos.l-smallimage.bleft-Math.abs(settings.xOffset)-settings.zoomWidth>0)?(0-settings.zoomWidth-Math.abs(settings.xOffset)):(smallimage.ow+Math.abs(settings.xOffset));this.node.toppos=Math.abs(settings.yOffset);break;case"top":this.node.leftpos=Math.abs(settings.xOffset);this.node.toppos=(smallimage.pos.t-smallimage.btop-Math.abs(settings.yOffset)-settings.zoomHeight>0)?(0-settings.zoomHeight-Math.abs(settings.yOffset)):(smallimage.oh+Math.abs(settings.yOffset));break;case"bottom":this.node.leftpos=Math.abs(settings.xOffset);this.node.toppos=(smallimage.pos.t-smallimage.btop+smallimage.oh+Math.abs(settings.yOffset)+settings.zoomHeight0){$('.zoomWrapperTitle',this.node).html(zoomtitle).show();} $obj.setposition();};this.hide=function(){switch(settings.hideEffect){case'fadeout':this.node.fadeOut(settings.fadeoutSpeed,function(){});break;default:this.node.hide();break;} this.ieframe.hide();};this.show=function(){switch(settings.showEffect){case'fadein':this.node.fadeIn();this.node.fadeIn(settings.fadeinSpeed,function(){});break;default:this.node.show();break;} if(isIE6&&settings.zoomType!='innerzoom'){this.ieframe.width=this.node.width();this.ieframe.height=this.node.height();this.ieframe.left=this.node.leftpos;this.ieframe.top=this.node.toppos;this.ieframe.css({display:'block',position:"absolute",left:this.ieframe.left,top:this.ieframe.top,zIndex:99,width:this.ieframe.width+'px',height:this.ieframe.height+'px'});$('.zoomPad',el).append(this.ieframe);this.ieframe.show();};};};function Largeimage(){var $obj=this;this.node=new Image();this.loadimage=function(url){loader.show();this.url=url;this.node.style.position='absolute';this.node.style.border='0px';this.node.style.display='none';this.node.style.left='-5000px';this.node.style.top='0px';document.body.appendChild(this.node);this.node.src=url;};this.fetchdata=function(){var image=$(this.node);var scale={};this.node.style.display='block';$obj.w=image.width();$obj.h=image.height();$obj.pos=image.offset();$obj.pos.l=image.offset().left;$obj.pos.t=image.offset().top;$obj.pos.r=$obj.w+$obj.pos.l;$obj.pos.b=$obj.h+$obj.pos.t;scale.x=($obj.w/smallimage.w);scale.y=($obj.h/smallimage.h);el.scale=scale;document.body.removeChild(this.node);$('.zoomWrapperImage',el).empty().append(this.node);lens.setdimensions();};this.node.onerror=function(){alert('Problems while loading the big image.');throw'Problems while loading the big image.';};this.node.onload=function(){$obj.fetchdata();loader.hide();el.largeimageloading=false;el.largeimageloaded=true;if(settings.zoomType=='drag'||settings.alwaysOn){lens.show();stage.show();lens.setcenter();}};this.setposition=function(){var left=-el.scale.x*(lens.getoffset().left-smallimage.bleft+1);var top=-el.scale.y*(lens.getoffset().top-smallimage.btop+1);$(this.node).css({'left':left+'px','top':top+'px'});};return this;};$(el).data("jqzoom",obj);};$.jqzoom={defaults:{zoomType:'standard',zoomWidth:300,zoomHeight:300,xOffset:10,yOffset:0,position:"right",preloadImages:true,preloadText:'Loading zoom',title:true,lens:true,imageOpacity:0.4,alwaysOn:false,showEffect:'show',hideEffect:'hide',fadeinSpeed:'slow',fadeoutSpeed:'2000'},disable:function(el){var api=$(el).data('jqzoom');api.disable();return false;},enable:function(el){var api=$(el).data('jqzoom');api.enable();return false;},disableAll:function(el){jqzoompluging_disabled=true;},enableAll:function(el){jqzoompluging_disabled=false;}};})(jQuery);