Magnifier2=function(a){this.source_selector="";this.image_src="";this.title=null;this.max_image_win_size=Magnifier2.MAX_IMAGE_WIN_SIZE;this.min_load_win_size=Magnifier2.MIN_LOAD_WIN_SIZE;this.auto_center=Magnifier2.AUTO_CENTER;this.view_padding=5;this.auto_center_delay=1000;this.load_win=null;this.image_win=null;this.preloader=null;this.mask=null;this.is_active=false;this.auto_center_timer=null;$.extend(this,a);this.init()};Magnifier2.TITLE_HEIGHT=40;Magnifier2.MAX_IMAGE_WIN_SIZE=["100%","100%"];Magnifier2.LOAD_WIN_SIZE=new Size(250,250);Magnifier2.LOADER_IMAGE="/i/image-loader.gif";Magnifier2.BLANK_IMAGE="/i/0.gif";Magnifier2.MASK_OPACITY=0.6;Magnifier2.IMAGE_MARGIN=[new Offset(10,10),new Offset(10,10)];Magnifier2.AUTO_CENTER=true;Magnifier2.prototype={init:function(){if(this.auto_center){this._initAutoCenter()}},_initAutoCenter:function(){$(window).resize(this.onUpdateViewFrame.createDelegate(this)).scroll(this.onUpdateViewFrame.createDelegate(this))},show:function(){this.is_active=true;this.getMask().show(this._showWin.createDelegate(this));this.getSourceEl().trigger("magnifiershow",[this])},_showWin:function(){if(this.getPreloader().isLoaded()){this._showImageWin()}else{this._showLoadWin()}},_showLoadWin:function(){var a=this.getLoadWin();a.setTitle(this.title);a.setFrame(this.getLoadWinFrame());a.show("slow",function(){this.getPreloader().load()},this)},_showImageWin:function(){var a=this.getImageWin();a.setTitle(this.title);a.setSrc(this.image_src);a.showFrom(this.getLoadWinFrame(),this.getImageFrame())},hide:function(){this.is_active=false;this.getMask().hide()},_sizeToInt:function(b,a){if(typeof b=="String"){return b.indexOf("%")?Math.round(a*parseFloat(b)/100):parseInt(b)}return b},startCenterImageWin:function(){if(this.auto_center_timer){clearTimeout(this.auto_center_timer)}var a=this;this.auto_center_timer=setTimeout(function(){a.centerImageWin()},this.auto_center_delay)},centerImageWin:function(){if(this.isImageWinActive()){this.getImageWin().moveTo(this.getImageFrame())}},getPreloader:function(){if(!this.preloader){this.preloader=new Magnifier2.Preloader({src:this.image_src,listeners:{load:this.onLoad,scope:this}})}return this.preloader},getSourceEl:function(){return $(this.source_selector)},getLoadWinFrame:function(){var a=Magnifier2.Utils.getViewFrameCenter();return new Frame(a.left-Magnifier2.LOAD_WIN_SIZE.width/2,a.top-Magnifier2.LOAD_WIN_SIZE.height/2,Magnifier2.LOAD_WIN_SIZE.width,Magnifier2.LOAD_WIN_SIZE.height)},getImageFrame:function(){var e=Magnifier2.Utils.getViewFrame();var a=this.getMaxWinSize();e.offset.add(this.view_padding,this.view_padding);e.size.sub(this.view_padding*2,this.view_padding*2);var b=new Frame(Magnifier2.Utils.getViewFrameCenter(),this.preloader.getSize());var d=this.getImageWin().getImageMargin();var c=new Size(d[0].left+d[1].left,this.getImageWin().getTitleHeight()+d[0].top+d[1].top);e.size.sub(c);b.size.setup(Magnifier2.Utils.scaleRectangleIntoRectangle(b.size,e.size));b.size.add(c);b.offset.sub(b.size.width/2,b.size.height/2);return b},getMaxWinSize:function(){if(typeof this.max_image_win_size!="Array"){return this.max_image_win_size}var c=Magnifier2.Utils.getViewFrame().getSize();var b=this._sizeToInt(this.max_image_win_size[0],c.width);var a=this._sizeToInt(this.max_image_win_size[1],c.height);return new Size(b,a)},getMask:function(){if(!this.mask){this.mask=Magnifier2.BaseInstance.instance().getMask();this.mask.on("click",this.onMaskClick,this)}return this.mask},getLoadWin:function(){if(!this.load_win){this.load_win=Magnifier2.BaseInstance.instance().getLoadWin();this.load_win.on("cancel",this.onCancelLoad,this)}return this.load_win},getImageWin:function(){if(!this.image_win){this.image_win=new Magnifier2.Win.Image();this.image_win.on("close",this.onCloseImage,this)}return this.image_win},isLoadWinActive:function(){return this.load_win&&this.load_win.isShown()&&!this.load_win.isShowing()},isImageWinActive:function(){return this.image_win&&this.image_win.isShown()&&!this.image_win.isShowing()},onMaskClick:function(){if(!this.is_active){return}if(this.isLoadWinActive()){this.load_win.cancel()}if(this.isImageWinActive()){this.image_win.close()}},onCancelLoad:function(){if(!this.is_active){return}this.preloader.cancel();this.getLoadWin().hide();this.hide();this.getSourceEl().trigger("magnifierclose",[this])},onCloseImage:function(){if(!this.is_active){return}this.getImageWin().hideTo(this.getLoadWinFrame());this.hide();this.getSourceEl().trigger("magnifierclose",[this])},onLoad:function(){if(!this.is_active){return}this.getLoadWin().hide();this._showImageWin()},onHideImageWin:function(){if(!this.is_active){return}this.getMask().hide()},onUpdateViewFrame:function(){if(!this.is_active){return}if(this.isImageWinActive()){this.startCenterImageWin()}}};Magnifier2.Utils={getViewFrameCenter:function(){var a=Magnifier2.Utils.getViewFrame();return new Offset(a.offset.left+a.size.width/2,a.offset.top+a.size.height/2)},getViewFrame:function(){return new Frame(Magnifier2.Utils.getViewOffset(),Magnifier2.Utils.getViewSize())},getViewSize:function(){var a=document.compatMode=="CSS1Compat"?document.documentElement.clientHeight:document.body.clientHeight;var b=document.compatMode=="CSS1Compat"?document.documentElement.clientWidth:document.body.clientWidth;return new Size(b,a)},getViewOffset:function(){var b=self.pageYOffset||(document.documentElement&&document.documentElement.scrollTop)||(document.body&&document.body.scrollTop);var a=self.pageXOffset||(document.documentElement&&document.documentElement.scrollLeft)||(document.body&&document.body.scrollLeft);return new Offset(a,b)},getBodyOffset:function(){return $("body").offset()},scaleRectangleIntoRectangle:function(d,e){var c=1;var b=e.width/d.width;var a=e.height/d.height;if(b>1&&a>1){c=1}else{if(b<1&&a<1){if(b>a){c=a}else{c=b}}else{if(b<1){c=b}else{c=a}}}return new Size(d.width*c,d.height*c)}};Magnifier2.BaseInstance=function(){this.mask=null;this.load_win=null};Magnifier2.BaseInstance._instance=null;Magnifier2.BaseInstance.instance=function(){if(!Magnifier2.BaseInstance._instance){Magnifier2.BaseInstance._instance=new Magnifier2.BaseInstance()}return Magnifier2.BaseInstance._instance};Magnifier2.BaseInstance.prototype={getMask:function(){if(!this.mask){this.mask=new Magnifier2.Mask()}return this.mask},getLoadWin:function(){if(!this.load_win){this.load_win=new Magnifier2.Win.Loader()}return this.load_win}};Magnifier2.Mask=function(a){this.opacity=Magnifier2.MASK_OPACITY;this.mask_speed="fast";this.shown=false;this.el=null;this.addEvents({click:true});Magnifier2.Mask.superclass.constructor.call(this,a)};utils.extend(Magnifier2.Mask,utils.Observable,{initEvents:function(){$(window).resize(this.onUpdateFrame.createDelegate(this)).scroll(this.onUpdateFrame.createDelegate(this));this.getEl().click(this.onClick.createDelegate(this))},show:function(a){this.shown=true;this._updatePosition();this.getEl().fadeTo(this.mask_speed,this.opacity,a)},hide:function(){var a=this;this.getEl().fadeTo(this.mask_speed,0,function(){a.shown=false;$(this).css({top:-1000,left:-1000,width:0,height:0})})},_updatePosition:function(){var a=Magnifier2.Utils.getViewFrame();this.getEl().css({top:a.offset.top,left:a.offset.left}).width(a.size.width).height(a.size.height)},getEl:function(){if(!this.el){this.el=this._createEl().getIdSelector();this.initEvents()}return $(this.el)},onUpdateFrame:function(){if(this.shown){this._updatePosition()}},onClick:function(){this.fireEvent("click",[this])},_createEl:function(){return $('<div class="magnifier_mask">&nbsp;</div>').css({position:"absolute",top:-1000,left:-1000,width:0,height:0}).appendTo("body").fadeTo(0,0)}});Magnifier2.Win=function(a){this.frame=new Frame();this.title=null;this.title_height=Magnifier2.TITLE_HEIGHT;this.el_selector=null;this.shown=false;this.showing=false;this.addEvents({show:true,hide:true});Magnifier2.Win.superclass.constructor.call(this,a);this._init()};utils.extend(Magnifier2.Win,utils.Observable,{_init:function(){},show:function(b,d,a){if(this.shown){return}if(b){var c=this;this.getEl().fadeIn(b,function(){c.onShow(d,a)})}else{this.getEl().show();if(!this.showing){this.onShow(d,a)}}},hide:function(b,d,a){if(!this.shown){return}if(b){var c=this;this.getEl().fadeOut(b,function(){c.onHide(d,a)})}else{this.getEl().hide();this.onHide(d,a)}},isShown:function(){return this.shown},isShowing:function(){return this.showing},hasEl:function(a){return $(a).parents(this.el_selector).length>0||$(a).is(this.el_selector)},setOffset:function(b,a){this.frame.setOffset(b,a);this.applyOffset()},setSize:function(b,a){this.frame.setSize(b,a);this.applySize()},setFrame:function(a){this.frame=a;this.applyOffset();this.applySize()},setTitle:function(a){this.title=a;this._initTitle()},applyOffset:function(){this.getEl().css("top",this.frame.offset.top+"px").css("left",this.frame.offset.left+"px")},applySize:function(){this._applyWinSize();this._applyBodySize()},_applyWinSize:function(){this.getEl().width(this.frame.size.width).height(this.frame.size.height)},_applyBodySize:function(){this.getBodyEl().height(this.getBodySize().height).width(this.getBodySize().width)},getBodySize:function(){return this.calcBodySize(this.frame.size)},calcBodySize:function(a){return new Size(a.width,a.height-this.title_height)},getTitleHeight:function(){return this.title_height},showFrom:function(b,a){this.showing=true;this.setFrame(b);this.show();this._animateWindow(a,this.onShow)},hideTo:function(a){this._animateWindow(a,this.hide)},moveTo:function(a){if(this.shown){this._animateWindow(a)}},_animate:function(a,d,c){var b=this;a.animate({top:d.offset.top+"px",left:d.offset.left+"px",width:d.size.width+"px",height:d.size.height+"px"},"fast",function(){if(c){c.call(b)}})},_animateBody:function(b){var a=new Frame(new Offset(),this.calcBodySize(b.size));this._animate(this.getBodyEl(),a)},_animateWindow:function(b,a){this._animate(this.getEl(),b,function(){this.setFrame(b);if(a){a.call(this)}});this._animateBody(b)},onShow:function(b,a){this.showing=false;this.shown=true;this.fireEvent("show",[this]);if(b){b.call(a?a:this,this)}},onHide:function(b,a){this.shown=false;this.fireEvent("hide",[this]);if(b){b.call(a?a:this,this)}},setOverflowBody:function(a){this.getBodyEl().css("overflow",a?"scroll":"hidden")},getEl:function(){if(!this.el_selector){this.el_selector=this._createElem()}return $(this.el_selector)},getBodyEl:function(){return $(".body",this.getEl())},getTitleEl:function(){return $(".title",this.getEl())},_createElem:function(){var a=$('<div class="magnify_win" style="display: none; position: absolute;"></div>').appendTo("body");this._initElem(a);return a.getIdSelector()},_initElem:function(a){this._createContainer(a)},_createContainer:function(a){var b=$('<div class="container" style="position: relative; width: 100%; height: 100%;"></div>').appendTo(a);this._initContainer(b)},_initContainer:function(a){this._createBody(a);this._createTitle(a)},_createBody:function(a){var b=$('<div class="body" style="position: relative; width: 100%;"></div>').appendTo(a);this._initBody(b)},_initBody:function(a){},_createTitle:function(a){var b=$('<div class="title" style="position: relative; overflow: hidden; width: 100%;"><div class="title_text"></div></div>').appendTo(a);this._initTitle(b)},_initTitle:function(a){$(".title_text",a).html(this.title?this.title:"&#160;")}});Magnifier2.Win.Loader=function(a){this.loader_image=Magnifier2.LOADER_IMAGE;this.addEvents({cancel:true});Magnifier2.Win.Loader.superclass.constructor.call(this,a)};utils.extend(Magnifier2.Win.Loader,Magnifier2.Win,{_initBody:function(a){a.css("overflow","hidden");$('<table width="100%" height="100%"><tr><td style="text-align: center; vertical-align: middle;"><img src="'+this.loader_image+'" alt="loading..."/></td></tr></table>').appendTo(a);$("img",a).click(this.onCancel.createDelegate(this))},cancel:function(){this.onCancel()},onCancel:function(){this.fireEvent("cancel",[this])}});Magnifier2.Win.Image=function(a){this.image_margin=Magnifier2.IMAGE_MARGIN;this.closed=true;this.addEvents({close:true});Magnifier2.Win.Image.superclass.constructor.call(this,a)};utils.extend(Magnifier2.Win.Image,Magnifier2.Win,{getImageMargin:function(){return this.image_margin},show:function(a){this.closed=false;this.setOverflowBody(false);Magnifier2.Win.Image.superclass.show.call(this,a)},close:function(){if(this.closed){return}this.closed=true;this.fireEvent("close",[this])},setSrc:function(a){this.src=a;this.getImgEl().attr("src",Magnifier2.BLANK_IMAGE);this.getImgEl().attr("src",a)},_applyBodySize:function(){this._applyImageSize()},_applyImageSize:function(){var a=new Size(this.getBodySize().width-(this.image_margin[0].left+this.image_margin[1].left),this.getBodySize().height-(this.image_margin[0].top+this.image_margin[1].top));this.getImgEl().width(a.width).height(a.height)},_animateBody:function(b){var a=new Frame(new Offset(),this.calcBodySize(b.size).sub(this.image_margin[0].left+this.image_margin[1].left,this.image_margin[0].top+this.image_margin[1].top));this._animate(this.getImgEl(),a)},onClose:function(){this.close()},_initBody:function(a){$('<img src="'+this.src+'" alt="" title=""/>').appendTo(a).click(this.onClose.createDelegate(this));a.css({"padding-left":this.image_margin[0].left,"padding-top":this.image_margin[0].top,"padding-bottom":this.image_margin[1].top})},getImgEl:function(){return $("img",this.getBodyEl())}});Magnifier2.Manager=function(){this.magnifiers={};this.addEvents({showmagnifier:true,closemagnifier:true})};Magnifier2.Manager._instance=null;Magnifier2.Manager.instance=function(){if(!Magnifier2.Manager._instance){Magnifier2.Manager._instance=new Magnifier2.Manager()}return Magnifier2.Manager._instance};utils.extend(Magnifier2.Manager,utils.Observable,{get:function(a){return this.magnifiers[a]},add:function(b,a){this.magnifiers[b]=a;a.getSourceEl().bind("magnifiershow",this.onShow.createDelegate(this));a.getSourceEl().bind("magnifierclose",this.onClose.createDelegate(this))},onShow:function(a,b){this.fireEvent("showmagnifier",[b])},onClose:function(a,b){this.fireEvent("closemagnifier",[b])}});Magnifier2.Preloader=function(a){this.src=null;this.loaded=false;this.size=new Size();this.selector=null;this.addEvents({load:true});Magnifier2.Preloader.superclass.constructor.call(this,a)};utils.extend(Magnifier2.Preloader,utils.Observable,{load:function(){this.loaded=false;this.getImgEl().attr("src",this.src)},setSrc:function(a){this.loaded=false;this.src=a},isLoaded:function(){return this.loaded},getSize:function(){return this.size},onLoad:function(a){this.size.setup(a.target.width,a.target.height);this.loaded=true;this.removeEl();this.fireEvent("load",[this])},cancel:function(){this.removeEl()},removeEl:function(){if(!this.selector){return}this.getImgEl().unbind("load",this.onLoad);this.getEl().remove();this.selector=null},getEl:function(){if(!this.selector){this.selector=this._createPreloadImg()}return $(this.selector)},getImgEl:function(){return $("img",this.getEl())},_createPreloadImg:function(){var b=$('<div style="position: absolute; top: -10px; left: -10px; width: 1px; height: 1px; overflow: hidden;"></div>');var a=$("<img>").load(this.onLoad.createDelegate(this));return b.append(a).appendTo("body").getIdSelector()}});function enlarge(c){var a=$("img",c);if(!a.length){a=$(c)}var d=a.generateId().attr("id");var b=Magnifier2.Manager.instance().get(d);if(!b){Magnifier2.Manager.instance().add(d,b=new Magnifier2({source_selector:a.getIdSelector(),image_src:$(c).attr("href"),title:a.attr("title")}))}b.show();return false}$.fn.magnifier=function(a){return this.each(function(){if(this.src.indexOf(a)>=0){var b=$(this);var d=b.generateId().attr("id");var c=new Magnifier2({source_selector:b.getIdSelector(),image_src:this.src.replace(a,""),title:b.attr("title")});Magnifier2.Manager.instance().add(d,c);b.addClass("magnifier").click(function(){c.show()})}})};