/**
* jQuery fancyzoom plugin.
* This is an adaptation of the fancyzoom effect as a jQuery plugin
*
* Author: Mathieu Vilaplana <mvilaplana@df-e.com>
* Date: March 2008
* rev: 1.0
*/
(function($){var strImgDir='/images/fancyzoom/';$.fn.fancyzoom=function(userOptions){var oImgZoomBox;var oOverlay=$('<div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,cursor:"wait"});var oImgClose=$('<img>').css({position:'absolute',top:0,left:0,cursor:'pointer',zIndex:102});function openZoomBox(elLink,o){if(o.showoverlay){oOverlay.appendTo('body').click(function(){closeZoomBox(o)})}pos=$('img',elLink).offset();o=$.extend(o,{dimOri:{width:$('img',elLink).outerWidth(),height:$('img',elLink).outerHeight(),left:pos.left,top:pos.top,'opacity':0}});oImgZoomBox.css({'opacity':0}).appendTo('body');var iWidth=oImgZoomBox.outerWidth()+(oImgClose.height()/2);var iHeight=oImgZoomBox.outerHeight();dimBoxTarget=$.extend({},{width:iWidth,height:iHeight,'opacity':1},__posCenter((iWidth-15),(iHeight-15)));oImgClose.css({left:(iWidth-30+dimBoxTarget.left),top:dimBoxTarget.top});var $fctEnd=function(){if($.fn.shadow&&!$.browser.msie){$('img',oImgZoomBox).shadow(o.shadowOpts)}if(o.Speed>0&&!$.browser.msie){oImgClose.fadeIn('slow')}else{oImgClose.show()}};if(o.Speed>0){oImgZoomBox.css(o.dimOri).animate(dimBoxTarget,o.Speed,$fctEnd)}else{oImgZoomBox.css(dimBoxTarget);$fctEnd()}}function closeZoomBox(o){oImgClose.hide();if(o.Speed>0){oImgZoomBox.animate(o.dimOri,o.Speed*2/3,function(){$(this).empty().remove()});if(o.showoverlay){oOverlay.animate({'opacity':0},o.Speed,function(){$(this).empty().remove()})}}else{oImgZoomBox.empty().remove();if(o.showoverlay){oOverlay.empty().remove()}}}return this.each(function(){var $this=$(this);var opts=$.extend($.fn.fancyzoom.defaultsOptions,userOptions||{},{dimOri:{},oImgZoomBoxProp:{position:'absolute',left:0,top:0}});oOverlay.css({opacity:opts.overlay,background:opts.overlayColor});if(!/\.jpg|\.png|.gif/i.test($this.attr('href'))||$('img',$this).size()===0){return}$this.click(function(){if(oLoading&&oLoading.is(':visible')||timerLoadingImg){if(oImgZoomBox&&$('img',oImgZoomBox).attr('src')!=$(this).attr('href')){__cancelLoading()}else{return false}}var o=$.extend({},opts,userOptions);if(oImgZoomBox){oImgZoomBox.empty().remove()}if(o.showoverlay&&oOverlay){oOverlay.empty().remove().css({'opacity':o.overlay})}if($.ifixpng){$.ifixpng(o.imgDir+'blank.gif')}oImgClose.attr('src',o.imgDir+'closebox.png').appendTo('body');if($.fn.ifixpng){oImgClose.ifixpng()}oImgClose.hide().unbind('click').click(function(){closeZoomBox(o)});oImgZoomBox=$('<div>').css(o.oImgZoomBoxProp).empty();oImgZoom=$('<img>').attr('src',$(this).attr('href')).css({zIndex:100,'margin-top':(oImgClose.height()/2)+'px'}).click(function(){closeZoomBox(o)}).appendTo(oImgZoomBox);var imgPreload=new Image();imgPreload.src=$(this).attr('href');var $fctEndLoading=function(){if(__getFileName(imgPreload.src)==__getFileName($('img',oImgZoomBox).attr('src'))){openZoomBox($this,o);oLoading.hide()}};if(imgPreload.complete){openZoomBox($this,o)}else{__displayLoading();imgPreload.onload=function(){var $fcttime=function(){if(bCancelLoading){bCancelLoading=false}else{$fctEndLoading()}};$fcttime()}}return false})})};$.fn.fancyzoom.defaultsOptions={overlayColor:'#000',overlay:0.6,showoverlay:false,Speed:400,shadowOpts:{color:"#000",offset:4,opacity:0.2},imgDir:strImgDir};function __posCenter(iWidth,iHeight){var iLeft=($(window).width()-iWidth)/2+$(window).scrollLeft();var iTop=($(window).height()-iHeight)/2+$(window).scrollTop();iLeft=(iLeft<0)?0:iLeft;iTop=(iTop<0)?0:iTop;return{left:iLeft,top:iTop}}var oLoading=null;var bCancelLoading=false;var timerLoadingImg=null;function __displayLoading(){if(!oLoading){oLoading=$('<div>').css({width:50,height:50,position:'absolute','background':'transparent',opacity:8/10,color:'#FFF',padding:'5px','font-size':'10px'}).css(__posCenter(50,50)).html('<img  src="" />').appendTo('body').click(function(){__cancelLoading()})}else{oLoading.css(__posCenter(50,50)).show().html('<img src="'+$.fn.fancyzoom.defaultsOptions.imgDir+'blank.gif" />')}timerLoadingImg=setTimeout(__changeimageLoading,400)}function __cancelLoading(){bCancelLoading=true;oLoading.hide();if(timerLoadingImg){clearTimeout(timerLoadingImg);timerLoadingImg=null}}function __changeimageLoading(){if(!oLoading.is(':visible')){timerLoadingImg=null;return}var $im=$('img',oLoading);if(!$im.attr('src')){strImgSrc=$.fn.fancyzoom.defaultsOptions.imgDir+"zoom-spin-1.png"}else{tab=$im.attr('src').split(/[- .]+/);iImg=parseInt(tab[2]);iImg=(iImg<12)?(iImg+1):1;strImgSrc=tab[0]+"-"+tab[1]+"-"+iImg+"."+tab[3]}var pLoad=new Image();pLoad.src=strImgSrc;var $fct=function(){oLoading.css(__posCenter(50,50));$im.attr('src',strImgSrc);timerLoadingImg=setTimeout(__changeimageLoading,100)};if(pLoad.complete){$fct()}else{pLoad.onload=$fct}}function __getFileName(strPath){if(!strPath){return false}var tabPath=strPath.split('/');return((tabPath.length<1)?strPath:tabPath[(tabPath.length-1)])}})(jQuery);