Magnifier=function(a){this.source_selector="";this.image_src="";this.title=null;this.loader_image=Magnifier.LOADER_IMAGE;this.max_image_win_size=Magnifier.MAX_IMAGE_WIN_SIZE;this.min_load_win_size=Magnifier.MIN_LOAD_WIN_SIZE;this.view_padding=5;this.load_win=null;this.image_win=null;$.extend(this,a);this.preloader=new Magnifier.Preloader({src:this.image_src,callback:this.onLoad,scope:this});this.init()};Magnifier.TITLE_HEIGHT=20;Magnifier.MAX_IMAGE_WIN_SIZE=new Size(800,600);Magnifier.MIN_LOAD_WIN_SIZE=new Size(200,200);Magnifier.LOADER_IMAGE="/images/image-loader.gif";Magnifier.prototype={init:function(){$("body").click(this.onBodyClick.createDelegate(this))},show:function(b,a){if(b){this.setSrc(b,a)}if(this.preloader.isLoaded()){this.showImageWin()}else{this.showLoadWin()}this.getSourceEl().trigger("magnifiershow",[this])},close:function(){if(this.preloader.isLoaded()){this.closeImageWin()}else{this.closeLoadWin()}},setSrc:function(b,a){this.image_src=b;this.title=a;this.preloader.setSrc(b)},loadImage:function(){this.showLoadWin()},showLoadWin:function(){var a=this.getLoadWin();a.setTitle(this.title);a.setFrame(this.getSourceElFrame());a.show("slow")},hideLoadWin:function(a){if(this.load_win){this.getLoadWin().hide(a)}},showImageWin:function(){var a=this.getImageWin();a.setTitle(this.title);a.setSrc(this.image_src);a.showFrom(this.getSourceElFrame(),this.getImageFrame())},hideImageWin:function(){this.getImageWin().hide()},closeImageWin:function(){this.getImageWin().close()},closeLoadWin:function(){if(this.load_win){this.getLoadWin().cancel()}},hide:function(){this.hideLoadWin();this.hideImageWin()},getImageFrame:function(){var a=this.getSourceElFrame();var d=Magnifier.Utils.getViewFrame();d.offset.add(this.view_padding,this.view_padding);d.size.sub(this.view_padding*2,this.view_padding*2);var b=new Offset(a.offset.left+a.size.width/2,a.offset.top+a.size.height/2);var c=new Frame(b,this.preloader.getSize());if(c.size.width>this.max_image_win_size.width){c.size.width=this.max_image_win_size.width}if(c.size.height>this.max_image_win_size.height){c.size.height=this.max_image_win_size.height}c.size.height+=this.getImageWin().getTitleHeight();if(c.size.width>d.size.width){c.size.width=d.size.width}if(c.size.height>d.size.height){c.size.height=d.size.height}c.offset.sub(c.size.width/2,c.size.height/2);if(c.getRight()>d.getRight()){c.offset.sub(c.getRight()-d.getRight(),0)}if(c.getBottom()>d.getBottom()){c.offset.sub(0,c.getBottom()-d.getBottom())}if(c.offset.left<d.offset.left){c.offset.left=d.offset.left}if(c.offset.top<d.offset.top){c.offset.top=d.offset.top}return c},getLoadWin:function(){if(!this.load_win){this.load_win=new Magnifier.Win.Loader({title:this.title,loader_image:this.loader_image,on_cancel:this.onCancel,on_show:this.onShowLoadWin,scope:this})}return this.load_win},getImageWin:function(){if(!this.image_win){this.image_win=new Magnifier.Win.Image({title:this.title,src:this.image_src,on_close:this.onClose,scope:this})}return this.image_win},getSourceElFrame:function(){var a=new Frame(this.getSourceElOffset(),this.getSourceElSize());a.size.add(0,Magnifier.TITLE_HEIGHT);if(a.size.width>=this.min_load_win_size.width&&a.size.height>=this.min_load_win_size.height){return a}a.offset.add(a.size.width/2,a.size.height/2);if(a.size.width<this.min_load_win_size.width){a.size.width=this.min_load_win_size.width}if(a.size.height<this.min_load_win_size.height){a.size.height=this.min_load_win_size.height}a.offset.sub(a.size.width/2,a.size.height/2);return a},getSourceElOffset:function(){var a=new Offset(this.getSourceEl().offset());return a.sub(Magnifier.Utils.getBodyOffset())},getSourceElSize:function(){var a=this.getSourceEl();return new Size(a.width(),a.height())},isSource:function(a){return $(a).parents(this.source_selector).length>0||$(a).is(this.source_selector)},onBodyClick:function(a){if(this.isSource(a.target)){return}if(this.load_win&&this.load_win.isShown()&&!this.load_win.isShowing()&&!this.load_win.hasEl(a.target)){this.load_win.cancel()}if(this.image_win&&this.image_win.isShown()&&!this.image_win.isShowing()&&!this.image_win.hasEl(a.target)){this.image_win.close()}},onLoad:function(a){this.hideLoadWin();this.getImageWin().setRealImageSize(a.getSize());this.showImageWin()},onCancel:function(){this.preloader.cancel();this.hideLoadWin("normal");this.getSourceEl().trigger("magnifierclose",[this])},onClose:function(){this.getImageWin().hideTo(this.getSourceElFrame());this.getSourceEl().trigger("magnifierclose",[this])},onShowLoadWin:function(){this.preloader.load()},getSourceEl:function(){return $(this.source_selector)}};Magnifier.Utils={getViewFrame:function(){return new Frame(Magnifier.Utils.getViewOffset(),Magnifier.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()}};Magnifier.Win=function(a){this.frame=new Frame();this.title=null;this.title_height=Magnifier.TITLE_HEIGHT;this.on_show=null;this.scope=null;this.el_selector=null;this.shown=false;this.showing=false;$.extend(this,a);this._init()};Magnifier.Win.prototype={_init:function(){},show:function(a){if(this.shown){return}if(a){var b=this;this.getEl().fadeIn(a,function(){b.onShow()})}else{this.getEl().show();if(!this.showing){this.onShow()}}},hide:function(a){if(!this.shown){return}if(a){var b=this;this.getEl().fadeOut(a,function(){b.onHide()})}else{this.getEl().hide();this.onHide()}},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)},_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(){this.showing=false;this.shown=true;if(this.on_show){this.on_show.call(this.scope?this.scope:this,this)}},onHide:function(){this.shown=false},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;")}};Magnifier.Win.Loader=function(a){this.loader_image="/img/image-loader.gif";this.on_cancel=null;Magnifier.Win.Loader.superclass.constructor.call(this,a)};utils.extend(Magnifier.Win.Loader,Magnifier.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).bind("click",{target:this},this.onCancel)},onCancel:function(a){a.data.target.cancel()},cancel:function(){if(this.on_cancel){this.on_cancel.call(this.scope?this.scope:this,this)}}});Magnifier.Win.Image=function(a){this.src="/i/0.gif";this.real_image_size=new Size();this.on_close=null;this.scope=null;this.closed=true;Magnifier.Win.Image.superclass.constructor.call(this,a)};utils.extend(Magnifier.Win.Image,Magnifier.Win,{setRealImageSize:function(b,a){this.real_image_size=new Size(b,a)},show:function(a){this.setImageToFillMode();this.closed=false;Magnifier.Win.Image.superclass.show.call(this,a)},close:function(){if(this.closed){return}this.closed=true;this.setImageToFillMode();if(this.on_close){this.on_close.call(this.scope?this.scope:this,this)}},setSrc:function(a){this.src=a;this.getImgEl().attr("src",a)},_applyBodySize:function(){Magnifier.Win.Image.superclass._applyBodySize.call(this);this._applyImageSize()},_applyImageSize:function(){this.getImgEl().width(this.getBodySize().width).height(this.getBodySize().height)},_animateBody:function(b){Magnifier.Win.Image.superclass._animateBody.call(this,b);var a=new Frame(new Offset(),this.calcBodySize(b.size));this._animate(this.getImgEl(),a,this.onEndImageAnimation)},onClose:function(a){a.data.target.close()},onEndImageAnimation:function(){Magnifier.Win.Image.superclass.onShow.call(this);this.setImageToOverflowMode()},setImageToOverflowMode:function(){var a=this.getBodySize();if(this.real_image_size.width>a.width||this.real_image_size.height>a.height){this.setOverflowBody(true);this.getImgEl().width(this.real_image_size.width).height(this.real_image_size.height)}},setImageToFillMode:function(){this.setOverflowBody(false);this._applyImageSize()},_initBody:function(a){$('<img src="'+this.src+'" alt="" title=""/>').appendTo(a).bind("click",{target:this},this.onClose)},getImgEl:function(){return $("img",this.getBodyEl())}});Magnifier.Manager=function(){this.magnifiers={};this.addEvents({showmagnifier:true,closemagnifier:true})};Magnifier.Manager._instance=null;Magnifier.Manager.instance=function(){if(!Magnifier.Manager._instance){Magnifier.Manager._instance=new Magnifier.Manager()}return Magnifier.Manager._instance};utils.extend(Magnifier.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))},closeAll:function(){$.each(this.magnifiers,function(b,a){a.close()})},onShow:function(a,b){this.fireEvent("showmagnifier",[b])},onClose:function(a,b){this.fireEvent("closemagnifier",[b])}});Magnifier.Preloader=function(a){this.src=null;this.callback=null;this.scope=null;this.loaded=false;this.size=new Size();this.selector=null;$.extend(this,a)};Magnifier.Preloader.prototype={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){var b=a.data.target;b.size.setup(this.width,this.height);b.loaded=true;b.removeEl();if(b.callback){b.callback.call(b.scope?b.scope:b,b)}},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>").bind("load",{target:this},this.onLoad);return b.append(a).appendTo("body").getIdSelector()}};function enlarge(c){Magnifier.Manager.instance().closeAll();var a=$("img",c);if(!a.length){a=$(c)}var d=a.generateId().attr("id");var b=Magnifier.Manager.instance().get(d);if(!b){Magnifier.Manager.instance().add(d,b=new Magnifier({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 Magnifier({source_selector:b.getIdSelector(),image_src:this.src.replace(a,""),title:b.attr("title")});Magnifier.Manager.instance().add(d,c);b.addClass("magnifier").click(function(){c.show()})}})};

