/*!
 * jQzoom Evolution Library v2.3  - Javascript Image magnifier
 * http://www.mind-projects.it
 *
 * Copyright 2011, Engineer Marco Renzi
 * Licensed under the BSD license.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of the organization nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * Date: 03 May 2011 22:16:00
 */
(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=$("<div/>").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.pageX<smallimage.pos.l||e.pageY<smallimage.pos.t||e.pageY>smallimage.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=$("<div/>").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=$("<div/>").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)/2<smallimage.pos.l;}function overright(lens){return el.mousepos.x+(lens.w)/2>smallimage.pos.r;}function overtop(lens){return el.mousepos.y-(lens.h)/2<smallimage.pos.t;}function overbottom(lens){return el.mousepos.y+(lens.h)/2>smallimage.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=$("<div class='zoomWindow'><div class='zoomWrapper'><div class='zoomWrapperTitle'></div><div class='zoomWrapperImage'></div></div></div>");this.ieframe=$('<iframe class="zoomIframe" src="javascript:\'\';" marginwidth="0" marginheight="0" align="bottom" scrolling="no" frameborder="0" ></iframe>');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.zoomHeight<screen.height)?(smallimage.oh+Math.abs(settings.yOffset)):(0-settings.zoomHeight-Math.abs(settings.yOffset));break;default:this.node.leftpos=(smallimage.rightlimit+Math.abs(settings.xOffset)+settings.zoomWidth<screen.width)?(smallimage.ow+Math.abs(settings.xOffset)):(0-settings.zoomWidth-Math.abs(settings.xOffset));this.node.toppos=Math.abs(settings.yOffset);break;}}this.node.css({left:this.node.leftpos+"px",top:this.node.toppos+"px"});return this;};this.append=function(){$(".zoomPad",el).append(this.node);this.node.css({position:"absolute",display:"none",zIndex:5001});if(settings.zoomType=="innerzoom"){this.node.css({cursor:"default"});var thickness=(smallimage.bleft==0)?1:smallimage.bleft;$(".zoomWrapper",this.node).css({borderWidth:thickness+"px"});}$(".zoomWrapper",this.node).css({width:Math.round(settings.zoomWidth)+"px",borderWidth:thickness+"px"});$(".zoomWrapperImage",this.node).css({width:"100%",height:Math.round(settings.zoomHeight)+"px"});$(".zoomWrapperTitle",this.node).css({width:"100%",position:"absolute"});$(".zoomWrapperTitle",this.node).hide();if(settings.title&&zoomtitle.length>0){$(".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);
