ns("Magnifier3");Magnifier3.IMAGE_LOADER="/img/image-loader.gif";Magnifier3.AUTO_CENTER=true;Magnifier3.AUTO_CENTER_DELAY=1000;Magnifier3.SLIDER_NAV_WIDTH=36;Magnifier3.USE_SIMPLE_IMAGE_PRELOADER=false;Magnifier3.Win=function(a){this.modal=true;this.width=200;this.height=200;this.top=0;this.left=0;this.header_height=30;this.toolbar_height=0;this.footer_height=0;this.mask=null;this.shown=false;this.selector=null;this.addEvents({show:true,hide:true});Magnifier3.Win.superclass.constructor.call(this,a)};utils.extend(Magnifier3.Win,utils.Observable,{show:function(){if(this.shown){return}if(this.modal){this.getMask().show()}this.getEl().show();this.setFrame(this.x,this.y,this.width,this.height);this.shown=true;this.onShow()},hide:function(){if(!this.shown){return}if(this.modal){this.getMask().hide()}this.getEl().hide();this.shown=false;this.onHide()},setPosition:function(a,c){var b=new Offset(a,c);this.x=b.left;this.y=b.top;this.getEl().css({left:b.left,top:b.top})},setSize:function(c,a){var b=new Size(c,a);this.width=b.width;this.height=b.height;this.getEl().width(b.width);this.getEl().height(b.height);this.updateSizes()},getFooterWidth:function(){return this.width},getHeaderWidth:function(){return this.width},getToolBarWidth:function(){return this.width},updateBodySize:function(){this.getBodyEl().width(this.width).height(this.height-this.footer_height-this.header_height-this.toolbar_height)},updateFooterSize:function(){this.getFooterEl().width(this.getFooterWidth())},updateHeaderSize:function(){this.getHeaderEl().width(this.getHeaderWidth())},updateToolBarSize:function(){this.getToolBarEl().width(this.getToolBarWidth())},updateSizes:function(){this.updateHeaderSize();this.updateToolBarSize();this.updateBodySize();this.updateFooterSize()},setFrame:function(b,e,c,a){var d=new Frame(b,e,c,a);this.setPosition(d.offset);this.setSize(d.size)},getMask:function(){if(!this.mask){this.mask=new utils.Effects.Mask({listeners:{click:this.onMaskClick,scope:this}})}return this.mask},center:function(){var a=utils.Effects.Frame.getViewCenter();this.setPosition(a.left-this.width/2,a.top-this.height/2)},setTitle:function(a){this.getTitleEl().html(a)},_createWin:function(){var a=$('<div class="magnify_win"></div>').appendTo("body");a.css("position","absolute");this._createContainer(a);return a},_createContainer:function(b){var a=$('<div class="container"></div>').appendTo(b).css({width:"100%",height:"100%"});if(this.header_height>0){this._createHeader(a)}if(this.toolbar_height>0){this._createToolBar(a)}this._createBody(a);if(this.footer_height>0){this._createFooter(a)}this._createButtons(a);return a},_createBody:function(a){return $('<div class="body"></div>').appendTo(a)},_createHeader:function(a){return $('<div class="header"><div class="title"></div></div>').appendTo(a).css({position:"relative",height:this.header_height})},_createToolBar:function(a){return $('<div class="toolbar"></div>').appendTo(a).css({position:"relative",height:this.toolbar_height})},_createFooter:function(a){return $('<div class="footer"></div>').appendTo(a).css({position:"absolute",bottom:0,height:this.footer_height})},_createButtons:function(b){var a=$('<div class="buttons"></div>').appendTo(b);this._createCloseButton(a);return a},_createCloseButton:function(a){return $('<div class="button close" title="Закрыть">&nbsp;</div>').appendTo(a).click(this.onClose.createDelegate(this))},getContainerEl:function(){return $(".container",this.getEl())},getBodyEl:function(){return $(".body",this.getEl())},getFooterEl:function(){return $(".footer",this.getEl())},getHeaderEl:function(){return $(".header",this.getEl())},getToolBarEl:function(){return $(".toolbar",this.getEl())},getTitleEl:function(){return $(".title",this.getHeaderEl())},getEl:function(){if(!this.selector){this.selector=this._createWin().getIdSelector()}return $(this.selector)},onMaskClick:function(){this.hide()},onShow:function(){this.fireEvent("show",[this])},onHide:function(){this.fireEvent("hide",[this])},onClose:function(){this.hide()}});Magnifier3.MagnifyWin=function(a){this.image_loader_src=Magnifier3.IMAGE_LOADER;this.image_margin=15;this.min_width=200;this.min_height=200;this.view_padding=10;this.auto_center=Magnifier3.AUTO_CENTER;this.auto_center_delay=Magnifier3.AUTO_CENTER_DELAY;this.preloader=null;this.auto_center_timer=null;this.title="";this.image_src="";this.image_size=new Size();Magnifier3.MagnifyWin.superclass.constructor.call(this,a);if(this.auto_center){this._initAutoCenter()}};utils.extend(Magnifier3.MagnifyWin,Magnifier3.Win,{_initAutoCenter:function(){$(window).resize(this.onUpdateViewFrame.createDelegate(this)).scroll(this.onUpdateViewFrame.createDelegate(this))},showImage:function(b,a){this.title=a?a:"";this.stopAutoCenterTimer();this.show();this.center();if(this.image_src!=b){this.showLoaderLayout();this.getPreloader().load(b)}else{this.showContainerLayout();this.maximize()}},hide:function(){this.stopAutoCenterTimer();this.getEl().stop();Magnifier3.MagnifyWin.superclass.hide.call(this)},getPreloader:function(){if(!this.preloader){this.preloader=new utils.Effects.ImagePreloader({listeners:{load:this.onLoadImage,scope:this}})}return this.preloader},showLoaderLayout:function(){this.getContainerEl().hide();this.getLoaderEl().width(this.width).height(this.height).show()},showContainerLayout:function(){this.getContainerEl().show();this.getLoaderEl().hide()},getLoaderEl:function(){return $(".loader",this.getEl())},_createWin:function(){var a=Magnifier3.MagnifyWin.superclass._createWin.call(this);this._createLoaderLayout(a);return a},_createLoaderLayout:function(b){var a=$('<div class="loader"><table width="100%" height="100%"><tr><td style="text-align: center; vertical-align: middle;"><img src="'+this.image_loader_src+'" alt="Загружается..." title="Загружается..."/></td></tr></table></div>').appendTo(b).css({position:"absolute",top:0,left:0,display:"none"});$("img",a).click(this.onCancel.createDelegate(this));return a},getMaximizedWindowFrame:function(){var b=new Size(this.image_margin*2,this.image_margin*2+this.footer_height+this.header_height+this.toolbar_height);var a=utils.Effects.Frame.scaleRectangleIntoRectangle(this.image_size,utils.Effects.Frame.getViewSize().sub(this.view_padding*2,this.view_padding*2).sub(b));var e=a.add(b);if(e.width<this.min_width){e.width=this.min_width}if(e.height<this.min_height){e.height=this.min_height}var c=utils.Effects.Frame.getViewCenter();var d=new Offset(c.left-e.width/2,c.top-e.height/2);return new Frame(d,e)},getFooterWidth:function(){return this.width-this.image_margin*2},getHeaderWidth:function(){return this.width-this.image_margin*2},getToolBarWidth:function(){return this.width-this.image_margin*2},updateBodySize:function(){Magnifier3.MagnifyWin.superclass.updateBodySize.call(this);this.updateImageSize()},updateFooterSize:function(){this.getFooterEl().width(this.getFooterWidth()).css("left",this.image_margin)},updateHeaderSize:function(){this.getHeaderEl().width(this.getHeaderWidth()).css("left",this.image_margin);this.getTitleEl().width(this.getHeaderWidth())},updateToolBarSize:function(){this.getToolBarEl().width(this.getToolBarWidth()).css("left",this.image_margin)},updateImageSize:function(){var b=new Size(this.width-this.image_margin*2,this.height-this.image_margin*2-this.footer_height-this.header_height-this.toolbar_height);var a=utils.Effects.Frame.scaleRectangleIntoRectangle(this.image_size,b);var c=new Offset(b.width/2-a.width/2+this.image_margin,b.height/2-a.height/2+this.image_margin);this.getImageEl().css({top:c.top,left:c.left}).width(a.width).height(a.height)},setImage:function(d,c,a){this.getPreloader().cancel();this.showContainerLayout();this.image_src=d;this.image_size=new Size(c,a);var b=$('<img src="'+d+'" alt=""/>').css({display:"block",position:"relative",top:this.image_margin,left:this.image_margin,width:1,height:1}).click(this.onImageClick.createDelegate(this));this.getBodyEl().empty().append(b);this.updateImageSize()},maximize:function(){this.getContainerEl().hide();this.show();var a=this.getMaximizedWindowFrame();this.getEl().animate({width:a.size.width,height:a.size.height,top:a.offset.top,left:a.offset.left},"swing",(function(){this.setFrame(a.offset,a.size);this.getContainerEl().fadeIn("fast")}).createDelegate(this))},startAutoCenterTimer:function(){this.stopAutoCenterTimer();this.auto_center_timer=setTimeout(this.onAutoCenter.createDelegate(this),this.auto_center_delay)},stopAutoCenterTimer:function(){if(this.auto_center_timer!==null){this.auto_center_timer=clearTimeout(this.auto_center_timer)}this.auto_center_timer=null},getImageEl:function(){return $("img",this.getBodyEl())},cancel:function(a){this.getPreloader().cancel();this.showContainerLayout();if(this.image_src==""||a===true){this.hide()}},onLoadImage:function(a){this.setImage(a.getSrc(),a.getSize());this.setTitle(this.title);this.getLoaderEl().hide();this.maximize()},onUpdateViewFrame:function(){if(this.shown&&!this.getPreloader().isLoading()){this.startAutoCenterTimer()}},onAutoCenter:function(){this.maximize()},onImageClick:function(){this.hide()},onCancel:function(){this.cancel()},onMaskClick:function(){this.cancel(true)},onClose:function(){this.cancel(true)}});Magnifier3.MultiImageMagnifyWin=function(a){this.slider_height=40;this.slider_image_height=40;this.slider_image_width=40;this.slider_image_margin=5;this.slider_nav_width=Magnifier3.SLIDER_NAV_WIDTH;this.use_simple_image_preloader=Magnifier3.USE_SIMPLE_IMAGE_PRELOADER;this.images=[];this.slider=null;this.simple_preloaded=false;a=$.extend({footer_height:60},a);Magnifier3.MultiImageMagnifyWin.superclass.constructor.call(this,a)};utils.extend(Magnifier3.MultiImageMagnifyWin,Magnifier3.MagnifyWin,{simplePreload:function(){for(var a=this.images.length-1;a>=0;a--){utils.Effects.SimpleImagePreloader.instance().add(this.images[a][1],a==0)}},show:function(){if(this.use_simple_image_preloader&&!this.simple_preloaded){this.simplePreload();this.simple_preloaded=true}Magnifier3.MultiImageMagnifyWin.superclass.show.call(this)},_createFooter:function(a){$footer=Magnifier3.MultiImageMagnifyWin.superclass._createFooter.call(this,a);this._createSlider($footer);return $footer},_createSlider:function(a){this.slider=new MiniSlider({render_to:a,images:this.getPreviews(),image_width:this.slider_image_width,image_height:this.slider_image_height,image_margin:this.slider_image_margin,nav_width:this.slider_nav_width,height:this.slider_height,listeners:{select:this.onSelectImage,scope:this}})},getPreviews:function(){var c=[];for(var b=0,a=this.images.length;b<a;b++){c.push([this.images[b][0],this.images[b][2]])}return c},updateFooterSize:function(){Magnifier3.MultiImageMagnifyWin.superclass.updateFooterSize.call(this);this.updateSliderSize()},updateSliderSize:function(){this.slider.setWidth(this.getFooterWidth())},showImageByNum:function(a){this.showImage(this.images[a][1],this.images[a][2])},setImage:function(c,b,a){Magnifier3.MultiImageMagnifyWin.superclass.setImage.call(this,c,b,a);if(this.getImageNum()!==false){this.slider.select(this.getImageNum())}},getImageNum:function(){return this.getImageNumBySrc(this.image_src)},getImageNumBySrc:function(c){for(var b=0,a=this.images.length;b<a;b++){if(this.images[b][1]==c){return b}}return false},onSelectImage:function(b,a){if(this.getImageNum()!==a){this.showImage(this.images[a][1],this.images[a][2])}return false},onImageClick:function(){var a=this.getImageNum();if(a===false){a=0}if(a<this.images.length-1){this.showImageByNum(a+1)}else{this.hide()}}});Magnifier3.Manager=function(){this.windows={}};Magnifier3.Manager.prototype={get:function(a){return this.windows[a]},set:function(b,a){this.windows[b]=a}};Magnifier3.Manager._instance=null;Magnifier3.Manager.instance=function(){if(!Magnifier3.Manager._instance){Magnifier3.Manager._instance=new Magnifier3.Manager()}return Magnifier3.Manager._instance};function enlarge(c,f){var b=$(c);var f=f||b.generateId().attr("id");var d=Magnifier3.Manager.instance().get(f);if(!d){d=new Magnifier3.MagnifyWin();Magnifier3.Manager.instance().set(f,d)}var a=$("img",b);var e="";if(a.length){e=a.attr("title")||a.attr("alt")}else{e=b.attr("title")}d.showImage(b.attr("href"),e);return false}$.fn.magnifier=function(a){return this.each(function(){if(this.src.indexOf(a)>=0){var b=$(this);var c=this.src.replace(a,"");b.wrap('<a class="magnifier" onclick="return enlarge(this)" href="'+c+'"></a>')}})};MiniSlider=function(a){this.render_to="";this.width=100;this.auto_init=true;this.image_margin=5;this.image_width=40;this.image_height=40;this.height=40;this.selection_width=2;this.selection_height=2;this.nav_width=36;this.loop=true;this.selection_opacity=0.4;this.images=[];this.selector="";this.slider_pos=0;this.selected=false;this.addEvents({select:true});MiniSlider.superclass.constructor.call(this,a);if(this.auto_init){this.init()}};utils.extend(MiniSlider,utils.Observable,{init:function(){this._create(this.render_to);this.render_to=null;this._initEvents();this.updateNavButtons()},_initEvents:function(){this.getSliderEl().click(this.onSliderClick.createDelegate(this));this.getNextButton().click(this.onNext.createDelegate(this));this.getPrevButton().click(this.onPrev.createDelegate(this))},_create:function(a){var b=$('<div class="mini_slider"><table cellspacing="0"><tr><td class="nav"><div class="prev">&nbsp;</div></td><td class="slider_cell"></td><td class="nav"><div class="next">&nbsp;</div></td></tr></table></div>').appendTo($(a)).css({position:"relative",height:this.height});this._createSlider($("td.slider_cell",b));this.selector=b.getIdSelector()},_createSlider:function(a){var d=$('<div class="slider"><table cellspacing="0" class="images"><tr></tr></table></div>').appendTo(a).css({height:this.height,position:"relative",overflow:"hidden"});$("table.images",d).css("position","absolute");var e=$("tr",d);for(var c=0,b=this.images.length;c<b;c++){this._createSliderImage(e,this.images[c][0],this.images[c][1],c);if(c<b-1){this._createImageDivider(e)}}return d},_createSliderImage:function(a,e,d,c){var b=$('<div class="image">&nbsp;</div>').css({background:'url("'+e+'") no-repeat center center',width:this.image_width,height:this.image_height}).attr("title",d).data("num",c);$("<td></td>").append(b).appendTo(a)},_createImageDivider:function(a){$('<td class="divider">&nbsp;</td>').appendTo(a).css({width:this.image_margin})},getSliderWidth:function(){var a=this.width-this.nav_width*2;return this._countImagesInVisibleArea(a)<=this.images.length?a:this.getImagePosWidth()*this.images.length-this.image_margin},getSliderWidthWithNavigation:function(){return this.getSliderWidth()+this.nav_width*2},setWidth:function(a){this.width=a;this.getEl().width(this.getSliderWidthWithNavigation()).css("padding-left",(a-this.getSliderWidthWithNavigation())/2);this.getSliderEl().width(this.getSliderWidth());this.updateNavButtons();this.updateSliderPos()},select:function(a){this.selected=a;setTimeout(this._setupSelection.createDelegate(this,[a]),750);this.updateNavButtons()},_setupSelection:function(a){$(".selected",this.getSelectedImageBlock()).remove();$('<div class="selected">&nbsp;</div>').appendTo(this.getImageBlock(a)).css("opacity",this.selection_opacity)},next:function(){if(this.hasNextImages()){this.select(this.getNextPos())}},prev:function(){if(this.hasPrevImages()){this.select(this.getPrevButton())}},slideToNext:function(a){if(!this.hasPrevImagesToSlide()){return}if(a===undefined){a=1}this._slide(a)},slideToPrev:function(a){if(!this.hasPrevImagesToSlide()){return}if(a===undefined){a=1}this._slide(-a)},_slide:function(a){this.slider_pos+=a;this.getImagesTable().animate({left:-this.getImagePosWidth()*this.slider_pos});this.updateNavButtons()},hidePrevButton:function(){this.getPrevButton().hide()},hideNextButton:function(){this.getNextButton().hide()},showPrevButton:function(){this.getPrevButton().show()},showNextButton:function(){this.getNextButton().show()},disablePrevButton:function(){this.getPrevButton().addClass("disabled")},disableNextButton:function(){this.getNextButton().addClass("disabled")},enablePrevButton:function(){this.getPrevButton().removeClass("disabled")},enableNextButton:function(){this.getNextButton().removeClass("disabled")},countMaxVisibleImages:function(){return this._countImagesInVisibleArea(this.getSliderWidth())},_countImagesInVisibleArea:function(a){return(a-this.image_width)/this.getImagePosWidth()+1},getImagePosWidth:function(){return this.image_width+this.image_margin},hasPrevImagesToSlide:function(){return this.slider_pos>0},hasNextImagesToSlide:function(){return this.slider_pos+this.countMaxVisibleImages()<this.images.length},hasPrevImages:function(){return this.loop||this.selected>0},hasNextImages:function(){return this.loop||this.selected<this.images.length-1},getNextPos:function(){var a=this.selected+1;if(a>=this.images.length){if(this.loop){a=0}else{a=false}}return a},getPrevPos:function(){var a=this.selected-1;if(a<0){if(this.loop){a=this.images.length-1}else{a=false}}return a},updateNavButtons:function(){if(this.hasPrevImages()){this.enablePrevButton()}else{this.disablePrevButton()}if(this.hasNextImages()){this.enableNextButton()}else{this.disableNextButton()}},updateSliderPos:function(){if(this.countMaxVisibleImages()>=this.images.length&&this.slider_pos>0){this.slideToPrev(this.slider_pos)}else{this.centerSelected()}},centerSelected:function(){if(this.selected!==false){this.centerImage(this.selected)}},centerImage:function(c){var b=this.countMaxVisibleImages();if(b>=this.images.length){return}var a=Math.ceil(c-b/2);if(a<0){a=0}if(a+b>=this.images.length){a=this.images.length-b}if(this.slider_pos!=a){this._slide(a-this.slider_pos)}},getImageBlock:function(a){return $("div.image:eq("+a+")",this.getSliderEl())},getImageBlocks:function(){return $("div.image",this.getSliderEl())},getSelectedImageBlock:function(){return $("div.image:has(.selected)",this.getSliderEl())},getSliderEl:function(){return $(".slider",this.getEl())},getImagesTable:function(){return $("table.images",this.getSliderEl())},getPrevButton:function(){return $(".prev",this.getEl())},getNextButton:function(){return $(".next",this.getEl())},getEl:function(){return $(this.selector)},onSliderClick:function(c){var a=$(c.target);if(a.hasClass("image")){var b=a.data("num");if(this.fireEvent("select",[this,b])){this.select(b)}}},onNext:function(){if(this.hasNextImages()){if(this.fireEvent("select",[this,this.getNextPos()])){this.next()}}},onPrev:function(){if(this.hasPrevImages()){if(this.fireEvent("select",[this,this.getPrevPos()])){this.prev()}}}});
