/*
	Base.js, version 1.1
	Copyright 2006-2007, Dean Edwards
	License: http://www.opensource.org/licenses/mit-license.php
*/
var Base=function(){};Base.extend=function(b,e){var f=Base.prototype.extend;Base._prototyping=true;var d=new this;f.call(d,b);delete Base._prototyping;var c=d.constructor;var a=d.constructor=function(){if(!Base._prototyping){if(this._constructing||this.constructor==a){this._constructing=true;c.apply(this,arguments);delete this._constructing}else{if(arguments[0]!=null){return(arguments[0].extend||f).call(arguments[0],d)}}}};a.ancestor=this;a.extend=this.extend;a.forEach=this.forEach;a.implement=this.implement;a.prototype=d;a.toString=this.toString;a.valueOf=function(g){return(g=="object")?a:c.valueOf()};f.call(a,e);if(typeof a.init=="function"){a.init()}return a};Base.prototype={extend:function(b,h){if(arguments.length>1){var e=this[b];if(e&&(typeof h=="function")&&(!e.valueOf||e.valueOf()!=h.valueOf())&&/\bbase\b/.test(h)){var a=h.valueOf();h=function(){var k=this.base||Base.prototype.base;this.base=e;var i=a.apply(this,arguments);this.base=k;return i};h.valueOf=function(i){return(i=="object")?h:a};h.toString=Base.toString}this[b]=h}else{if(b){var g=Base.prototype.extend;if(!Base._prototyping&&typeof this!="function"){g=this.extend||g}var d={toSource:null};var f=["constructor","toString","valueOf"];var c=Base._prototyping?0:1;while(j=f[c++]){if(b[j]!=d[j]){g.call(this,j,b[j])}}for(var j in b){if(!d[j]){g.call(this,j,b[j])}}}}return this},base:function(){}};Base=Base.extend({constructor:function(){this.extend(arguments[0])}},{ancestor:Object,version:"1.1",forEach:function(a,d,c){for(var b in a){if(this.prototype[b]===undefined){d.call(c,a[b],b,a)}}},implement:function(){for(var a=0;a<arguments.length;a++){if(typeof arguments[a]=="function"){arguments[a](this.prototype)}else{this.prototype.extend(arguments[a])}}return this},toString:function(){return String(this.valueOf())}});
/*
	xLazyLoader 1.3
	Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
	and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
	Copyright 2008 Oleg Slobodskoi (ajaxsoft.de)
*/
(function(b){b.xLazyLoader=function(e,d){if(typeof e=="object"){d=e;e="init"}new c()[e](d)};b.xLazyLoader.defaults={js:[],css:[],img:[],name:null,timeout:20000,success:function(){},error:function(){},complete:function(){},each:function(){}};var a=document.getElementsByTagName("head")[0];function c(){var m=this,o,i=[],k=[],j,d,f,e=[];this.init=function(p){if(!p){return}o=b.extend({},b.xLazyLoader.defaults,p);f={js:o.js,css:o.css,img:o.img};b.each(f,function(q,r){if(typeof r=="string"){r=r.split(",")}e=e.concat(r)});if(!e.length){h("error");return}if(o.timeout){j=setTimeout(function(){var q=i.concat(k);b.each(e,function(s,r){b.inArray(r,q)==-1&&k.push(r)});h("error")},o.timeout)}b.each(f,function(q,r){if(b.isArray(r)){b.each(r,function(t,s){l(q,s)})}else{if(typeof r=="string"){l(q,r)}}})};this.js=function(u,v,q){var t=b('script[src*="'+u+'"]');if(t.length){t.attr("pending")?t.bind("scriptload",v):v();return}var r=document.createElement("script");r.setAttribute("type","text/javascript");r.setAttribute("src",u);r.setAttribute("id",q);r.setAttribute("pending",1);r.onerror=n;b(r).bind("scriptload",function(){b(this).removeAttr("pending");v();setTimeout(function(){b(r).unbind("scriptload")},10)});var p=false;if(jQuery.browser.msie){r.onreadystatechange=function(){if(!p&&(this.readyState==="loaded"||this.readyState==="complete")){p=true;r.onreadystatechange=null;b(r).trigger("scriptload")}}}else{r.onload=function(){if(!p){p=true;r.onload=null;b(r).trigger("scriptload")}}}a.appendChild(r)};this.css=function(q,u,r){if(b('link[href*="'+q+'"]').length){u();return}var s=b('<link rel="stylesheet" type="text/css" media="all" href="'+q+'" id="'+r+'"></link>')[0];if(b.browser.msie){s.onreadystatechange=function(){/loaded|complete/.test(s.readyState)&&u()}}else{if(b.browser.opera){s.onload=u}else{var p=location.hostname.replace("www.",""),t=/http:/.test(q)?/^(\w+:)?\/\/([^\/?#]+)/.exec(q)[2]:p;p!=t&&b.browser.mozilla?u():(function(){try{s.sheet.cssRules}catch(v){d=setTimeout(arguments.callee,20);return}u()})()}}a.appendChild(s)};this.img=function(q,r){var p=new Image();p.onload=r;p.onerror=n;p.src=q};this.disable=function(p){b("#lazy-loaded-"+p,a).attr("disabled","disabled")};this.enable=function(p){b("#lazy-loaded-"+p,a).removeAttr("disabled")};this.destroy=function(p){b("#lazy-loaded-"+p,a).remove()};function l(q,p){m[q](p,function(r){r=="error"?k.push(p):i.push(p)&&o.each(p);g()},"lazy-loaded-"+(o.name?o.name:new Date().getTime()))}function h(p){o.complete(p,i,k);o[p](p=="error"?k:i);clearTimeout(j);clearTimeout(d)}function g(){if(i.length==e.length){h("success")}else{if(i.length+k.length==e.length){h("error")}}}function n(){k.push(this.src);g()}}})(jQuery);(function(b,a){if(!a){a=window.Lego={}}a.messages=a.messages||{};a.message=function(d,c){return a.params.locale=="ru"?c:(a.messages[d]||c)}})(jQuery,window.Lego);(function(b,a){a.block["b-head-tabs"]=function(e){var g=b(this),f=g.next(".b-head-search"),c=f.find(".b-search .b-input input:first"),h=f.find(".advanced"),k=(h.attr("href")||"").replace(/([?&])text=[^&]*/g,""),m=(function(){var n={www:"yandsearch",news:"yandsearch?rpt=nnews&grhow=clutop",yaca:"yandsearch?rpt=rs2",market:"search.xml?clid=%clid%&cvredirect=1",blogs:"search.xml?ft=blog",maps:"",auto:"search.xml"};n.images=n.www;n.adresa=n.video=n.slovari=n.auto;return n})(),l=b.grep(b.map(g.find(":not(strong)>a.b-head-tabs__link:not([href$=yandex.ru/all])"),function(o){var n=o.host.split(".")[0];return{node:b(o),clid:(b(o).attr("search").match(/[&?]clid=(\d+)/)||[])[1],service:n,url:m[n]}}),function(n){return typeof n.url!="undefined"}),d={www:505,search:521,images:526}[a.params.id]||527,j;setInterval((function(){var n=encodeURIComponent(b.trim(c.val())||e["default"]);if(j===n){return arguments.callee}j=n;if(!!h.length){h.attr("href",k+(!!n?i(k)+"text="+n:""))}b.each(l,function(){var o=!!n?(this.service=="market"?this.url.replace("%clid%",d):this.url)+i(this.url)+"text="+n:this.service=="market"?"?clid="+d+"&cvredirect=1":"",p=this.node[0];p.href=p.protocol+"//"+p.host+"/"+o+((this.clid&&this.service!="market"&&!(this.service=="www"&&!!n))?i(o)+"clid="+this.clid:"")});return arguments.callee})(),200);function i(n){return n.indexOf("?")!=-1?"&":"?"}}})(jQuery,window.Lego);(function(b,a){a.block["b-dropdown"]=function(i){var g=b(this),d=g.find(".b-dropdown__list"),c=b('<div class="b-dropdown__popup"><iframe class="b-dropdown__iframe" frameborder="0" src="javascript:\'<body style=\\\'background:none;overflow:hidden\\\'>\'"></iframe></div>'),h=d.clone(true).addClass("b-dropdown__list_clone").hide(),f=false,e=(function(){if(f){return}c.css("visibility","hidden").before(d).hide();h.hide();f=true});d.before(c);c.after(h);e();b(document).keydown(function(j){if(j.keyCode==27&&!(j.metaKey||j.ctrlKey||j.altKey||j.shiftKey)){e()}}).click(function(j){if(!b(j.target).is(".b-dropdown *")){e()}}).bind("popupsClose.lego",e);b(this).find(".b-dropdown__or").click(function(j){j.preventDefault();if(g.hasClass("b-dropdown_disabled")){g.trigger("popupDisabled.lego");return}if(f){b(document).trigger("popupsClose.lego");var k=b.Event("popupOpen.lego");g.trigger(k);if(!k.isDefaultPrevented()){h.css("display","");c.append(d).css("visibility","");if(i.direction=="up"){h.css("top",h.offset().top-h.height()+25);c.css("top",c.offset().top-c.height()+25)}c.css("display","");f=false}}else{e()}})}})(jQuery,window.Lego);(function(b,a){a.block["b-search__input"]=function(c){var d=b(this);if(c.focus||d.data("lego:focused")){if(!d.data("lego:focused")){d.focus();d.data("lego:focused",true)}if(!!window.history.length&&!b.trim(d.val())){d.bind("keydown",function(f){if(f.keyCode==8){return window.history.back()}d.unbind("keydown",arguments.callee)})}d.blur(function(){d.data("lego:focused",false)})}}})(jQuery,window.Lego);(function(b,a){a.block["b-hint-input"]=function(){var i=b(this),e=b("#"+i.attr("for")),g=function(){i.hide()},d=function(){i.show()},c=function(){h||e.val()?g():d()},h=false;e.focus(function(){h=true;c()}).blur(function(){h=false;c()}).bind("change mouseover",c);i.click(function(){e.focus()});e.change();var f=e.val();(function(){if(e.val()!=f){b(e).trigger("change");f=e.val()}setTimeout(arguments.callee,200)})()}})(jQuery,window.Lego);(function(b,a){a.block["b-head-user"]=function(){var c=b(this);if(a.params.login!=""){b.getJSON("//pass.yandex.ru/services?callback=?",{locale:a.params.locale,login:"yes"},function(f){if(!f||!f.services){return}var d=f.login||a.params.login;var e='<div class="g-js b-dropdown" onclick="return {name:\'b-dropdown\'}"><ul class="b-dropdown__list"><li class="b-dropdown__item b-dropdown__visible"><a href="http://i.yandex.ru" class="b-dropdown__or"><span class="b-pseudo-link"><b class="b-user"><b class="b-user__first-letter">'+d.substring(0,1)+"</b>"+d.substring(1)+"</b></span></span></a></li>";b.each(f.services,function(){e+='<li class="b-dropdown__item">';if(a.params.id==this.id&&a.params.index){e+="<strong>"+this.title+"</strong>"}else{e+='<a href="'+this.url+'"onmousedown="Lego.ch(\''+a.params.id+".login.myservices."+this.id+"',this)\">"+this.title+"</a>"}e+="</li>"});e+='<li class="b-dropdown__item b-dropdown__line"><a href="//passport.yandex.ru/">'+a.message("b-head-userinfo.user:passport","Паспорт")+"</a></li>";e+='<li class="b-dropdown__item"><a href="//passport.yandex.ru/passport?mode=changepass&retpath=http://i.yandex.ru/">'+a.message("b-head-userinfo.user:change-password","Сменить пароль")+"</a></li>";e+="</ul></div>";c.find(".b-user").replaceWith(e);a.blockInit(c,".b-dropdown")})}}})(jQuery,window.Lego);(function(b,a){a.block["b-auth"]=function(h){var e=b(this),d=false,f=b('<input type="hidden" name="timestamp"/>');e.append(f).submit(function(){if(d){return false}f.val(new Date().getTime())});var c=e.find("input[name=login], input[name=passwd]"),g=e.find("input[type=submit]");c.change(function(){d=false;c.each(function(){if(!b.trim(b(this).val())){d=true}});g.attr("disabled",d)});c.change()}})(jQuery,window.Lego);(function(b,a){a.block["b-auth-domik_popup"]=function(g){var d;b(".b-head-userinfo__entry .b-pseudo-link").click(function(){c();return false});function c(){if(!d){f()}b(document).bind("keyup.b-auth-domik",function(h){if(h.keyCode==27){e()}}).bind("click.b-auth-domik",function(h){if(b(h.target).parents().andSelf().index(d)==-1||b(h.target).is("input[type=button]")){e()}});window.scrollTo(0,0);d.show().find("input[name=login]").focus();b(document).trigger("show.b-auth-domik_popup")}function e(){b(document).unbind(".b-auth-domik");d.hide()}function f(){var h="&amp;msg="+a.params["passport-msg"]+"&amp;retpath="+encodeURIComponent(a.params.retpath);d=b('<form class="b-auth-domik b-auth-domik_popup" action="'+a.params["passport-host"]+"/passport?mode=auth"+h+'" method="post"><i class="b-auth-domik__roof"></i><table class="b-auth-domik__shadow"><tr><td class="b-auth-domik__shadow__lt">&nbsp;</td><td class="b-auth-domik__shadow__t"></td><td class="b-auth-domik__shadow__rt">&nbsp;</td></tr><tr><td class="b-auth-domik__shadow__l">&nbsp;</td><td class="b-auth-domik__shadow__m"><div class="b-auth-domik__form"><div class="b-auth-domik__title">'+g.title+'</div><div class="b-auth-domik__username"><label for="b-auth-domik_popup-username" class="b-hint-input g-js" onclick="return {name:\'b-hint-input\'}">'+a.message("b-auth:login","логин")+'</label><div class="b-input"><input class="b-input__text" id="b-auth-domik_popup-username" name="login" tabindex="11"/></div></div><div class="b-auth-domik__password"><label for="b-auth-domik_popup-password" class="b-hint-input g-js" onclick="return {name:\'b-hint-input\'}">'+a.message("b-auth:password","пароль")+'</label><div class="b-input"><input class="b-input__text" id="b-auth-domik_popup-password" name="passwd" type="password" tabindex="11"/></div></div><div class="b-auth-domik__permanent"><input class="b-auth-domik__check" id="b-auth-domik_popup-permanent" name="twoweeks" type="checkbox" value="yes" tabindex="11"/><label for="b-auth-domik_popup-permanent">'+a.message("b-auth:permanent","Запомнить меня")+'</label> <span class="b-auth-domik__help">(<a class="b-auth-domik__link" href="http://help.yandex.ru/passport/?id=922493" tabindex="12">'+a.message("b-auth:help","что&nbsp;это")+'</a>)</span></div><div class="b-auth-domik__button"><input class="b-auth-domik__submit" type="submit" value="'+a.message("b-auth:logon","Войти")+'" tabindex="11"/><input class="b-auth-domik__submit" type="button" value="'+a.message("b-auth:cancel","Отмена")+'" tabindex="11"/></div><div class="b-auth-domik__register"><a class="b-auth-domik__link" href="'+a.params["passport-host"]+"/passport?mode=register"+h+'" tabindex="11">'+(g.register||a.message("b-auth:register","Зарегистрироваться"))+'</a></div><div class="b-auth-domik__remember"><a class="b-auth-domik__remind" href="'+a.params["passport-host"]+'/passport?mode=remember" tabindex="11">'+a.message("b-auth:remember","Напомнить пароль")+'</a></div></div></td><td class="b-auth-domik__shadow__r">&nbsp;</td></tr><tr><td class="b-auth-domik__shadow__lb">&nbsp;</td><td class="b-auth-domik__shadow__b"></td><td class="b-auth-domik__shadow__rb">&nbsp;</td></tr></table><iframe class="b-popup-under"></iframe></form>');if(a.block["b-auth"]){a.block["b-auth"].call(d)}b("body").append(d);a.blockInit(d)}arguments.callee.login=c}})(jQuery,window.Lego);(function(f,a,e){var c;function d(g){return c?g.replace(/\=http.*/,"="+encodeURIComponent(c())):g}function b(g){g.currentTarget.href=d(g.currentTarget.href)}a.block["b-auth-domik_popup"]=function(i){var h;e.call(this,i);function g(){if(!h){e.login();h=f(".b-auth-domik_popup").bind("submit",function(){this.action=d(this.action)}).find("a:eq(1)").bind("mouseover",b).end()}else{if(h.is(":hidden")){e.login()}else{h.find("input[name=login]").focus()}}return false}f(".b-head-userinfo__entry a").unbind("click").bind("click",g).bind("mouseover",b);f.extend(arguments.callee,{login:g,onLinkHover:b})};a.block["b-auth-domik_popup"].setRetpath=function(g){c=g};f(function(){f(".b-head-userinfo__exit a").bind("mouseover",b)})})(jQuery,Lego,Lego.block["b-auth-domik_popup"]);(function(b,a){a.block["b-hl-print"]=function(){var d,c;b(this).bind("focus mouseover",function(){if(d){this.href=d()}}).click(function(e){open(this.href,"","toolbar=no, status=no, resizable=yes, scrollbars=yes, location=no, menubar=no, width=700");e.preventDefault()});arguments.callee.setUrl=function(e){d=e}}})(jQuery,window.Lego);(function(b,a){a.block["b-hl-permalink"]=function(){var e,d,c;d=b(this).find(".b-dropdown__or").bind("focus mouseover",function(){if(c){this.href=c()}}).bind("mousedown",function(){b(this).closest("ul").find("[name=link]").val(this.href).end().find("[name=code]").val('<a href="'+this.href.split("&").join("&amp;")+'">Посмотреть на\xA0Яндекс.Картах</a>').end();a.c("stred/pid=30/cid=2559")}).end().find("input").bind("click",function(){this.select()}).end().find(".api").bind("focus mouseover",function(){if(e){this.href=this.href.match(/^[^?]+/)[0]+"?"+b.param(e())}}).bind("mousedown",function(){a.c("stred/pid=30/cid=2590",this)}).end();b.extend(arguments.callee,{setUrl:function(f){c=f},setApiParams:function(f){e=f},toggle:function(){d.find(".b-dropdown__or:visible:first").trigger("mouseover").trigger("mousedown").trigger("click")}})}})(jQuery,window.Lego);YMaps.TrafficData=(function(a){return{coverageUrl:a+"trf/coverage.js",regionsStatUrl:a+"trf/stat.js",updateTimeout:4*60*1000,zIndex:5,imageRoot:"/i/",regionContentTemplate:"yamaps#regionBalloon",jamDataTemplate:"yamaps#jamHint",semaphoreStyles:{red:"traffic#red",yellow:"traffic#yellow",green:"traffic#green",nodata:"traffic#nodata",nolevel:"traffic#nolevel"},noHotspots:0,hotspots:{templates:{tile:a+"tiles?l=trf\x26%c\x26%t",hotspot:a+"tiles?l=trj\x26%c\x26%t",jam:a+"trf/%s/regions/jams/%j.js",key:"%c\x26l=trj\x26%t"},options:{hintOptions:{preloadTimeout:250,showTimeout:1000,hideTimeout:1000,style:{template:"traffic#hint"},offset:new YMaps.Point(5,5)},cursor:YMaps.Cursor.INHERIT,priority:0,hasHint:0,hasBalloon:0},cacheSize:100}}})(YMaps.TrafficUrl);(function(e){var m=e.jQuery,j,b,c={},f={};var a={moveActionTick:200};var i=function(p,n){var o=function(){};o.prototype=n.prototype;o.prototype.constructor=n;return p.prototype=new o},l=function(s,o){s=s instanceof Array?s:[s];var p=Array.prototype.slice.call(arguments,2),q=0,n=s.length,r;for(;q<n;q++){(r=s[q])[o].apply(r,p)}},h={NULL:function(){return null}},k="undefined",d=function(o,n){return o.x*n.y-o.y*n.x>0},g=function(o,n,t){var s=n.diff(t),r,q,p=1e-8;if(Math.abs(s.y)<p){return 0}r=(o.y-n.y)/s.y;q=n.x-o.x+r*s.x;if(q>-p&&r>-p&&r<1){return 1}return 0};c.HotspotLoader={queue:{},load:function(o,n){var p=n.id||Math.random();c.HotspotLoader.queue[p]=n;m.ajax({dataType:"script",scriptCharset:"utf-8",url:o,cache:n.cache||false})},onLoad:function(p,o){var n=c.HotspotLoader.queue[p];if(n){if(n.callback){n.callback.call(n.context||window,o)}delete c.HotspotLoader.queue[p]}}};e.HotspotLoader={onLoad:c.HotspotLoader.onLoad};j=c.AHotspotShape=function(u){var v,t,q,p,o,n,s=e.Point;q=o=u[0];p=n=u[1];this._points=[new s(q,p)];for(var r=2;r<u.length-1;r+=2){v=u[r];t=u[r+1];q=Math.min(v,q);p=Math.min(t,p);o=Math.max(v,o);n=Math.max(t,n);this._points.push(new s(v,t))}this._minX=q;this._minY=p;this._maxX=o;this._maxY=n};j.prototype={setHotspotObject:function(n){this._object=n},getHotspotObject:function(){return this._object},getMinX:function(){return this._minX},getMinY:function(){return this._minY},getMaxX:function(){return this._maxX},getMaxY:function(){return this._maxY},contains:h.NULL,getNumPoints:function(){return this._points.length},getPoint:function(n){return this._points[n].copy()}};j=f.HotspotRectShape=function(n){this._minX=Math.min(n[0],n[2]);this._minY=Math.min(n[1],n[3]);this._maxX=Math.max(n[0],n[2]);this._maxY=Math.max(n[1],n[3])};b=i(j,c.AHotspotShape);b.contains=function(n){return(n.x>=this._minX&&n.y>=this._minY&&n.x<=this._maxX&&n.y<=this._maxY)};b.getNumPoints=b.getPoint=h.NULL;j=f.HotspotCPolyShape=function(n){c.AHotspotShape.call(this,n)};b=i(j,c.AHotspotShape);b.contains=function(n){var q=this._points,r=q[this._points.length-1].diff(n),s=q[0].diff(n),o=d(r,s);for(var p=1;p<q.length;p++){r=s;s=q[p].diff(n);if(d(r,s)!=o){return 0}}return 1};j=f.HotspotNPolyShape=function(n){c.AHotspotShape.call(this,n)};b=i(j,c.AHotspotShape);b.contains=function(n){var r=this._points.length,q=this._points[r-1],p,s=0;for(var o=0;o<r;o++){p=this._points[o];if(g(n,q,p)){s=!s}q=p}return s};j=c.HotspotShapeContainer=function(){this.__shapes=[];this.__maxWidth=0};b=j.prototype;b.add=function(v){var o=[];for(var t=0,q=v.length;t<q;t++){var r=v[t];for(var s=0,p=r.getNumShapes();s<p;s++){var u=r.getShape(s),n=u.getMaxX()-u.getMinX();o.push(u);if(n>this.__maxWidth){this.__maxWidth=n}}}o.sort(function(x,w){return x.getMinX()-w.getMinX()});this.__shapes=this.__merge(this.__shapes,o)};b.remove=function(q){var o=[];for(var p=0,n=this.__shapes.length;p<n;p++){if(m.inArray(this.__shapes[p].getHotspotObject(),q)==-1){o.push(this.__shapes[p])}}this.__shapes=o};b.__merge=function(r,p){var t=[],s=0,q=0,o=r.length,n=p.length;while(s<o&&q<n){if(r[s].getMinX()<p[q].getMinX()){t.push(r[s]);s++}else{t.push(p[q]);q++}}for(;s<o;s++){t.push(r[s])}for(;q<n;q++){t.push(p[q])}return t};b.clear=function(){this.__shapes=[];this.__maxWidth=0};b.getShapeInPosition=function(u){if(!this.__shapes.length){return null}var s=this.getPosition(u.getX()-this.__maxWidth),r=this.getPosition(u.getX()+1),n=u.x,t=u.y,p=[];for(var q=s;q<r;q++){var o=this.__shapes[q];if(o.getMinX()<=n&&o.getMaxX()>=n&&o.getMinY()<=t&&o.getMaxY()>=t){if(o.contains(u)){p.push(this.__shapes[q])}}}if(!p.length){return null}p.sort(function(w,v){return v.getHotspotObject().getPriority()-w.getHotspotObject().getPriority()});return p[0]};b.getPosition=function(n){return this.__getPosition(0,this.__shapes.length-1,n)};b.__getPosition=function(s,p,r){var q=this.__shapes[s].getMinX(),o=this.__shapes[p].getMinX(),n;if(q>=r){return s}if(o<r){return p+1}if(p-s==1){return p}n=s+Math.round((p-s)*(r-q)/(o-q));if(n==s){n++}else{if(n==p){n--}}if(this.__shapes[n].getMinX()<r){return this.__getPosition(n,p,r)}else{return this.__getPosition(s,n,r)}};j=f.HotspotObject=function(p,n,q,o){this.__layer=p;this.__data=q||{};this.__priority=o||0;this.__shapes=n;l(this.__shapes,"setHotspotObject",this)};b=j.prototype;b.getLayer=function(){return this.__layer};b.getNumShapes=function(){return this.__shapes.length};b.getShape=function(n){return this.__shapes[n]};b.getData=function(){return this.__data};b.getPriority=function(){return this.__priority};b.requestHintData=function(n){n(this.__data.name||"")};b.requestBalloonData=function(p,n){var o="";if(this.__data.name){o+="<h3>"+this.__data.name+"</h3>"}if(this.__data.description){o+="<p>"+this.__data.description+"</p>"}p(o,n.getCoordPoint())};j=c.HotspotLayerContainer=function(n){this.__map=n;this.__layers=[];this.__layerObjects=[];this.__containers=[];this.__listeners=[];this.__activeTile={tile:null,zoom:null}};b=j.prototype;b.__getShapeContainer=function(o){var p=o.getOptions().priority,n=this.__containers[p]||new c.HotspotShapeContainer();if(!this.__containers[p]){this.__containers[p]=n}return n};b.addLayer=function(n){if(m.inArray(n,this.__layers)==-1){if(!this.__layers.length){this.__beginListening()}this.__layers.push(n);this.__layerObjects.push([]);var p=this.__activeTile.tile,o=this.__activeTile.zoom;if(p&&o){n.getObjectSource().requestObjects(this.__getLoadListener(n,p,o),n,p,o)}}};b.removeLayer=function(o){var n=m.inArray(o,this.__layers);if(n!=-1){this._removeObjects(o);this.__layers.splice(n,1);this.__layerObjects.splice(n,1);if(!this.__layers.length){this.__stopListening()}}};b.__beginListening=function(){var n=this.__map,o=this;this.__listeners=m.merge(e.Events.observe(n,[n.Events.BeforeClick,n.Events.BeforeDblClick],function(q,p){this.__onMouseEvent(p)},this),e.Events.observe(n,n.Events.BeforeMouseMove,function(q,p){this.__lastMoveEvent=p;if(p.isMapEventPrevented()){this.__abortCurrentAction(p)}else{if(!this.__moveTickTimeout){this.__moveTickTimeout=window.setTimeout(function(){o.__onMouseEvent(o.__lastMoveEvent);o.__moveTickTimeout=null},a.moveActionTick)}}},this),e.Events.observe(n,[n.Events.MoveStart,n.Events.Update,n.Events.SmoothZoomStart],function(q,p){this.__abortCurrentAction(p)},this),e.Events.observe(n,n.Events.BoundsChange,function(){this.__mapPixelOffset=this.__getMapPixelOffset()},this));m(n.getContainer()).bind("mouseleave.hs",function(){o.__abortCurrentAction()});this.__mapPixelOffset=this.__getMapPixelOffset()};b.__stopListening=function(){l(this.__listeners,"cleanup");this.__listeners=[];if(this.__moveTickTimeout){window.clearTimeout(this.__moveTickTimeout);this.__lastMoveEvent=null}m(this.__map.getContainer()).unbind("mouseleave.hs")};b.onRemoveFromMap=function(){this.__stopListening()};b.__getMapPixelOffset=function(){var o=this.__map,n=o.getContainerSize().scale(0.5),q=o.coordSystem.fromCoordPoint(o.getCenter()),p=o.tileCoordinates.scale(q,o.coordSystem.getMaxZoom(),o.getZoom());return n.diff(p)};b.__onMouseEvent=function(p){var o=p.getLocalPixels().copy().moveBy(this.__mapPixelOffset),s=o.copy().scale(1/256).apply(Math.floor),t,r=0;if(p.isMapEventPrevented()){this.__abortCurrentAction(p)}else{this.__updateActiveTile(s,p);t=this.__getActiveShape(o);var n=t?t.getHotspotObject():null,q=this.__activeShape?this.__activeShape.getHotspotObject():null;if(n!=q){this.__abortCurrentAction(p);if(n){this.__notifyLayer("mouseenter",t,p);r=1}}this.__activeShape=t;if(n){if(p.getEvent().type!="mousemove"||!r){this.__notifyLayer(p.getEvent().type,t,p)}}else{this.__lastMissedEvent=p}}};b.__notifyLayer=function(p,n,q){var o=n.getHotspotObject();e.Events.notify(o.getLayer(),p,o.getLayer(),o,q,n)};b.__getActiveShape=function(o){var n=this.__containers.length-1,p;while(!p&&n>=0){if(this.__containers[n]){p=this.__containers[n].getShapeInPosition(o)}n--}return p};b.__updateActiveTile=function(q,r){var p=this.__map.getZoom();if(!this.__tileEquals(q,this.__activeTile.tile)||this.__activeTile.zoom!=p){this.__abortCurrentAction(r);this._clear();this.__activeTile={tile:q,zoom:p};this.__lastMissedEvent=null;for(var o=0,n=this.__layers.length;o<n;o++){this.__layers[o].getObjectSource().requestObjects(this.__getLoadListener(this.__layers[o],q,p),this.__layers[o],q,p)}}};b.__getLoadListener=function(n,p,o){var q=this;return function(r){if(m.inArray(n,q.__layers)!=-1&&q.__activeTile.tile.equals(p)&&q.__activeTile.zoom==o){q._addObjects(n,r)}}};b.__abortCurrentAction=function(n){if(this.__activeShape){this.__notifyLayer("mouseleave",this.__activeShape,n||this.__lastMoveEvent);this.__activeShape=null}if(this.__moveTickTimeout){window.clearTimeout(this.__moveTickTimeout);this.__moveTickTimeout=null}};b._clear=function(){for(var o=0,n=this.__containers.length;o<n;o++){if(this.__containers[o]){this.__containers[o].clear()}}};b._addObjects=function(o,p){var n=m.inArray(o,this.__layers);if(n!=-1){this.__layerObjects[n]=p;this.__getShapeContainer(o).add(p);if(this.__lastMissedEvent){this.__onMouseEvent(this.__lastMissedEvent)}}};b._removeObjects=function(o){var n=m.inArray(o,this.__layers);if(n!=-1&&this.__layerObjects[n].length){this.__containers[o.getOptions().priority].remove(this.__layerObjects[n]);if(this.__activeShape&&this.__activeShape.getHotspotObject().getLayer()==o){this.__abortCurrentAction()}}this.__layerObjects[n]=[]};b.__tileEquals=function(o,n){if(!o||!n){return o==n}return o.equals(n)};j=f.HotspotObjectSource=function(o,p,n){this.__tileUrlTemplate=o;this.__keyTemplate=p;this.__options=m.extend({useBrowserCache:1,useProgramCache:0,programCacheEntries:100},n);if(this.__options.useProgramCache){this._enableCache(this.__options.programCacheEntries)}};b=j.prototype;b.getTileUrl=function(o,n){return this.__tileUrlTemplate.replace("%c","x="+o.x+"&y="+o.y+"&z="+n)};b.getKey=function(o,n){return this.__keyTemplate.replace("%c","x="+o.x+"&y="+o.y+"&z="+n)};b.getTileUrlTemplate=function(){return this.__tileUrlTemplate};b.setTileUrlTemplate=function(n){this.__tileUrlTemplate=n};b.getKeyTemplate=function(){return this.__keyTemplate};b.setKeyTemplate=function(n){this.__keyTemplate=n};b.requestObjects=function(r,n,q,o){var s=this.getKey(q,o),p=null;if(this.__options.useProgramCache){p=this.getCachedData(s)}if(p){r(p)}else{c.HotspotLoader.load(this.getTileUrl(q,o),{id:s,cache:this.__options.useBrowserCache,callback:function(t){var u=this.__parseResponse(n,t);if(this.__options.useProgramCache){this.cacheData(s,u)}r(u)},context:this})}};b.__parseResponse=function(o,n){var q=this,p=o.getMap();return m.map(n.objects,function(s){var u=s.base||s.center,t=p.tileCoordinates.scale(p.coordSystem.fromCoordPoint(u),p.coordSystem.getMaxZoom(),p.getZoom()),r=m.map(s.geometry,function(v){return q.__makeShape(t,v)});return q.createHotspotObject(o,r,s.data,s.priority)})};b.createHotspotObject=function(p,n,q,o){return new f.HotspotObject(p,n,q,o)};b.__shapes={rect:f.HotspotRectShape,npoly:f.HotspotNPolyShape,cpoly:f.HotspotCPolyShape};b.__makeShape=function(s,p){var r=p.shape?p.coords:p,q=s.getX(),o=s.getY();for(var n=0;n<r.length-1;n+=2){r[n]+=q;r[n+1]+=o}return p.shape?new this.__shapes[p.shape](r):new f.HotspotRectShape(r)};b=f.HotspotObjectSource.prototype;b._enableCache=function(n){this.__cacheCapacity=n;this.clearCache()};b._disableCache=function(){this.clearCache()};b.cacheData=function(o,n){this.__cacheEntries[this.__getFreeCachePosition()]=o;this.__cache[o]=n};b.__getUsedSize=function(){var n=this.__cacheEnd-this.__cacheStart;return(n>=0?n:n+this.__cacheCapacity)};b.__getFreeCachePosition=function(){if(this.__getUsedSize()<this.__cacheCapacity){var o=this.__cacheEnd;this.__cacheEnd=(this.__cacheEnd+1)%this.__cacheCapacity;return o}else{var n=this.__cacheStart;delete this.__cache[this.__cacheEntries[n]];this.__cacheEntries[n]=null;this.__cacheStart=(this.__cacheStart+1)%this.__cacheCapacity;this.__cacheEnd=(this.__cacheEnd+1)%this.__cacheCapacity;return n}};b.getCachedData=function(n){if(typeof(this.__cache[n])!=k){this.__cacheHits++}else{this.__cacheMisses++}return this.__cache[n]};b.clearCache=function(){this.__cache={};this.__cacheEntries=[];this.__cacheSize=this.__cacheStart=this.__cacheEnd=0;this.__cacheHits=this.__cacheMisses=0};(function(){j=f.HotspotLayer=function(p,o){this._options=m.extend({priority:0,cursor:e.Cursor.POINTER,hasHint:1,hintOptions:{},hasBalloon:1,balloonOptions:{}},o);this._objectSource=p;this.__cursorAdded=0};b=j.prototype;b.Events={MouseEnter:"mouseenter",MouseMove:"mousemove",MouseLeave:"mouseleave",Click:"click",DblClick:"dblclick",BalloonOpen:"balloonopen",BalloonClose:"balloonclose"};b.getObjectSource=function(){return this._objectSource};b.getOptions=function(){return this._options};b.setOptions=function(o){var p=0;this._setHintOptions(o);this._setBalloonOptions(o);this._setCursorOptions(o);if(typeof(o.priority)!=k&&o.priority!=this._options.priority){this._options.priority=o.priority;this.update()}};b.update=function(){var o=this.__map;if(o){o.removeLayer(this);o.addLayer(this)}};b.getMap=function(){return this.__map};b.onAddToMap=function(o,p){this.__map=o;this._layerManager=n.get(o);this._layerManager.addLayer(this);if(this._options.hasHint){this._enableHint()}if(this._options.hasBalloon){this._enableBalloon()}this._enableCursor()};b.onRemoveFromMap=function(){this._layerManager.removeLayer(this);this.__map=null;if(this._options.hasHint){this._disableHint()}if(this._options.hasBalloon){this._disableBalloon()}this._disableCursor()};b.onMapUpdate=b.onSmoothZoomStart=b.onSmoothZoomTick=b.onMove=b.onSmoothZoomEnd=b.getCopyright=b.getZoomRange=h.NULL;var n={maps:[],managers:[]};n.get=function(q){var o=m.inArray(q,n.maps);if(o!=-1){return n.managers[o]}else{var p=new c.HotspotLayerContainer(q);n.maps.push(q);n.managers.push(p);return p}}})();b=f.HotspotLayer.prototype;b._enableHint=function(){this.__mouseEventListeners=[e.Events.observe(this,this.Events.MouseEnter,this.__onMouseEnter),e.Events.observe(this,this.Events.MouseMove,this.__onMouseMove),e.Events.observe(this,this.Events.MouseLeave,this.__onMouseLeave)];this.__hintDataIsReady=0;this.__hintPosition=null;this.__hintObject=null};b._disableHint=function(){if(this.__hintObject){this._hideHint()}l(this.__mouseEventListeners,"cleanup");this.__mouseEventListeners=[]};b._setHintOptions=function(p){var q=this,n=this.__hintObject,o=this.getMap();if(typeof(p.hintOptions)!=k){this._options.hintOptions=p.hintOptions;if(o&&this.__hintObject&&this.__hintDataIsReady){o.hint.setOptions(m.extend({},this._options.hintOptions,{onHide:function(){q.__onHideHint(n)}}))}}if(typeof(p.hasHint)!=k&&p.hasHint!=this._options.hasHint){if(o&&this._options.hasHint){this._disableHint()}this._options.hasHint=p.hasHint;if(o&&p.hasHint){this._enableHint()}}};b.__onMouseEnter=function(p,o,q,n){q.preventMapEvent();this.__hintObject=o;this.__hintPosition=q.getLocalPixels();this.__hintDataIsReady=0;var r=this;o.requestHintData(function(s){if(o==r.__hintObject&&!r.__hintDataIsReady){r.__onLoadHintData(s)}},q,n)};b.__onMouseMove=function(o,n,p){p.preventMapEvent();this.__hintPosition=p.getLocalPixels();if(this.__hintObject==n&&this.__hintDataIsReady){this._moveHint(this.__hintPosition)}};b.__onMouseLeave=function(o,n){if(n==this.__hintObject&&this.__hintDataIsReady){this._hideHint(n)}this.__hintObject=null};b.__onLoadHintData=function(o){this.__hintDataIsReady=1;var p=this,n=this.__hintObject;this._showHint(o,function(){p.__onHideHint(n)})};b.__onHideHint=function(n){if(this.__hintObject==n){this.__hintObject=null}};b._showHint=function(o,n){this.getMap().hint.show(this.__hintPosition,o,m.extend({},this._hintOptions,{onHide:n}))};b._moveHint=function(n){this.getMap().hint.moveTo(n)};b._hideHint=function(){this.getMap().hint.hide()};b=f.HotspotLayer.prototype;b._enableBalloon=function(){var n=this.getMap();this.__clickListeners=[e.Events.observe(this,this.Events.Click,this.__onClick),e.Events.observe(this,this.Events.DblClick,function(p,o,q){q.preventMapEvent()}),e.Events.observe(n,n.Events.BalloonOpen,function(){this.__balloonObject=null},this)];this.__balloonObject=null};b._disableBalloon=function(){l(this.__clickListeners,"cleanup");this.__clickListeners=[];this._closeBalloon()};b._setBalloonOptions=function(o){var p=this,n=this.getMap();if(typeof(o.balloonOptions)!=k){this._options.balloonOptions=o.balloonOptions;if(n&&this.__balloonObject&&this.__balloonDataIsReady){n.balloon.setOptions(m.extend(this._options.balloonOptions,{onClose:function(){p.__onBalloonClose()}}))}}if(typeof(o.hasBalloon)!=k&&o.hasBalloon!=this._options.hasBalloon){if(n&&this._options.hasBalloon){this._disableBalloon()}this._options.hasBalloon=o.hasBalloon;if(n&&o.hasBalloon){this._enableBalloon()}}};b.__onClick=function(p,o,q,n){var r=this;q.preventMapEvent();if(this.__balloonObject!=o){this.__balloonObject=o;this.__balloonDataIsReady=0;o.requestBalloonData(function(t,s){if(r.__balloonObject==o){r.__onLoadBalloonData(t,s||q.getCoordPoint())}},q,n)}};b.__onLoadBalloonData=function(o,n){var p=this;this.__balloonDataIsReady=1;if(this.__balloonObject){this._openBalloon(o,n,function(){p.__onBalloonClose()})}};b._openBalloon=function(p,n,o){this.getMap().openBalloon(n,p,m.extend({},this._options.balloonOptions,{onClose:o}));e.Events.notify(this,this.Events.BalloonOpen,this)};b._closeBalloon=function(){if(this.__balloonObject&&this.__balloonDataIsReady){this.getMap().closeBalloon()}};b.__onBalloonClose=function(){this.__balloonObject=null;e.Events.notify(this,this.Events.BalloonClose,this)};b=f.HotspotLayer.prototype;b._enableCursor=function(){this.__cursorAdded=0;this.__cursorListeners=[e.Events.observe(this,this.Events.MouseEnter,this.__addCursor),e.Events.observe(this,this.Events.MouseLeave,this.__removeCursor)]};b._disableCursor=function(){this.__removeCursor()};b._setCursorOptions=function(n){if(typeof(n.cursor)!=k){this.__removeCursor();this._options.cursor=n.cursor;this.__addCursor()}};b.__addCursor=function(){var n=this._options.cursor;if(this.getMap()&&!this.__cursorAdded){if(n!=e.Cursor.INHERIT){this.getMap().addCursor(n)}this.__cursorAdded=1}};b.__removeCursor=function(){var n=this._options.cursor;if(this.getMap()&&this.__cursorAdded){if(n!=e.Cursor.INHERIT){this.getMap().removeCursor(n)}this.__cursorAdded=0}};e.Hotspots=f})(YMaps);(function(e){var k=e.jQuery,j,b,c={},f=e.TrafficData;delete e.TrafficData;var i=function(o,m){var n=function(){};n.prototype=m.prototype;n.prototype.constructor=m;return o.prototype=new n},l=function(r,n){r=r instanceof Array?r:[r];var o=Array.prototype.slice.call(arguments,2),p=0,m=r.length,q;for(;p<m;p++){(q=r[p])[n].apply(q,o)}},h=function(q,n){if(q.getTop()>n.getBottom()&&q.getBottom()<n.getTop()){var p,m,r,o;if(q.getLeft()>n.getLeft()){p=q.getLeft();m=n.getLeft();r=q.getRight();o=n.getRight()}else{p=n.getLeft();m=q.getLeft();r=n.getRight();o=q.getRight()}if(p>r){r+=360}if(m>o){o+=360}if(p>=m&&p<=o){return 1}else{if(r>=m+360&&r<=o+360){return 1}}}return 0},g=function(o,m){if(o.length!=m.length){return 0}for(var p=0,n=o.length;p<n;p++){if(o[p]!=m[p]){return 0}}return 1},d=function(m){if(!m){return""}if(parseInt(m)==1){return m.toString()+"&#160;"+a.strings.points[0]}if(parseInt(m)<5){return m.toString()+"&#160;"+a.strings.points[1]}return m.toString()+"&#160;"+a.strings.points[2]};var a={strings:{toCity:"увеличьте масштаб",instruction:", чтобы увидеть пробки",noRegionData:"Данные о&#160;пробках недоступны",jams:"Пробки",points:["балл","балла","балллов"],length:"Длина"},globalTraffic:{icons:{red:{href:f.imageRoot+"traffic/styles/red.png",iconOffset:new e.Point(-13,-39),iconSize:new e.Point(25,39)},yellow:{href:f.imageRoot+"traffic/styles/yellow.png",iconOffset:new e.Point(-13,-39),iconSize:new e.Point(25,39)},green:{href:f.imageRoot+"traffic/styles/green.png",iconOffset:new e.Point(-13,-39),iconSize:new e.Point(25,39)},nodata:{href:f.imageRoot+"traffic/styles/nodata.png",iconOffset:new e.Point(-13,-39),iconSize:new e.Point(25,39)},nolevel:{href:f.imageRoot+"traffic/styles/nolevel.png",iconSize:new e.Point(8,20),iconOffset:new e.Point(-4,-20)}}},localTrafficMinZoom:9,trafficTypes:[{color:"purple",tag:"Движение перекрыто"},{color:"red",tag:"Пробка"},{color:"yellow",tag:"Движение затруднено"},{color:"green",tag:"Свободно"}]};c.BaseLayout=function(){this._$element=k("<div/>")};c.BaseLayout.prototype={onAddToParent:function(m){this._$element.appendTo(m)},onRemoveFromParent:function(){this._$element.removeFromDom()},update:function(){},setContent:function(m){if(this._contentLayout){this._contentLayout.onRemoveFromParent()}if(m){m.onAddToParent(this._$element[0])}this._contentLayout=m}};(function(){var o=a.globalTraffic,r=["red","yellow","green","nodata","nolevel"],n=function(s){var u=o.icons[s],t=new e.Style();t.iconStyle=new e.IconStyle();t.iconStyle.offset=u.iconOffset;t.iconStyle.size=u.iconSize;t.iconStyle.href=u.href;t.balloonContentStyle=new e.BalloonContentStyle(f.regionContentTemplate);e.Styles.add("traffic#"+s,t)};for(var p=0;p<r.length;p++){n(r[p])}var m=function(v){var t=a.trafficTypes[parseInt(v.type)],s=v.from?"<p>"+v.from+(v.to?"&nbsp;→ "+v.to:"")+"</p>":"",u=v.speed?"<p>Скорость на участке: "+v.speed+"</p>":"";this._$element=k('<table class="YMaps-b-tooltip YMaps-b-tooltip_'+t.color+'" style="width: 250px"><tbody>                <tr class="YMaps-b-tooltip-head">                    <td class="YMaps-b-tooltip-l"><i class="YMaps-bit"><i></i></i></td>                    <td class="YMaps-b-tooltip-m"><i class="YMaps-bit"><i></i></i></td>                    <td class="YMaps-b-tooltip-r"><i class="YMaps-bit"><i></i></i></td>                </tr>                <tr class="YMaps-b-tooltip-headline">                    <td class="YMaps-b-tooltip-l"><i class="YMaps-bit"><i></i></i></td>                    <td class="YMaps-b-tooltip-m">                        <div class="YMaps-b-tooltip-headline-title">                            <h3>'+v.region+"</h3>                            <p>"+t.tag+'</p>                        </div>                    </td>                    <td class="YMaps-b-tooltip-r"><i class="YMaps-bit"><i></i></i></td>                </tr>                <tr class="YMaps-b-tooltip-body">                    <td class="YMaps-b-tooltip-l"><i class="YMaps-bit"><i></i></i></td>                    <td class="YMaps-b-tooltip-m">'+s+"<p>"+a.strings.length+": "+e.humanDistance(v.length)+"</p>"+u+'                    </td>                    <td class="YMaps-b-tooltip-r"><i class="YMaps-bit"><i></i></i></td>                </tr>                <tr class="YMaps-b-tooltip-foot">                    <td class="YMaps-b-tooltip-l"><i class="YMaps-bit"><i></i></i></td>                    <td class="YMaps-b-tooltip-m"><i class="YMaps-bit"><i></i></i></td>                    <td class="YMaps-b-tooltip-r"><i class="YMaps-bit"><i></i></i></td>                </tr>            </tbody></table>')};i(m,c.BaseLayout);e.Templates.add("traffic#hint",new e.LayoutTemplate(c.BaseLayout));e.Templates.add("traffic#hintContent",new e.LayoutTemplate(m));var q=function(t){var s=t.regionData;this._master=t.master;this._regionId=t.regionData.regionId;this._hasData=!!s.stat;if(this._hasData){this._$element=k('<div class="YMaps-b-traffic-balloon"><h3>'+s.name+'</h3><div class="YMaps-inner">'+(s.stat.level?'<i class="YMaps-traffic YMaps-traffic_'+s.stat.style+'"></i><h4>'+a.strings.jams+" "+d(s.stat.level)+"</h4><p>"+s.stat.localTime+" "+s.stat.hint+"</p>":"")+'<p class="YMaps-zoom"><a class="YMaps-b-pseudo-link" href="javascript:void(0)"><span>'+a.strings.toCity+"</span></a>"+a.strings.instruction+"</p></div></div>")}else{this._$element=k('<div class="YMaps-b-traffic-balloon"><div class="YMaps-inner"<i class="YMaps-traffic"></i><h4>'+s.name+'</h4><p class="YMaps-access">'+a.strings.noRegionData+"</p></div></div>")}};b=i(q,c.BaseLayout);b.onAddToParent=function(s){c.BaseLayout.prototype.onAddToParent.call(this,s);var t=this._master,u=this._regionId;if(this._hasData){this._$element.find("a").bind("click",function(){t.showRegion(u)})}};b.onRemoveFromParent=function(){this._$element.find("a").unbind("click");c.BaseLayout.prototype.onRemoveFromParent.call(this)};e.Templates.add("traffic#regionContent",new e.LayoutTemplate(q))})();c.TrafficLoader={queue:{},load:function(n,m){var o=m.id||Math.random();c.TrafficLoader.queue[o]=m;k.ajax({dataType:"script",scriptCharset:"utf-8",url:n,cache:m.cache||false})},onLoad:function(o,n){var m=c.TrafficLoader.queue[o];if(m){if(!m.old){if(m.callback){m.callback.call(m.context||window,n)}delete c.TrafficLoader.queue[o]}else{n.old=1;n.tile=m.tile.copy();delete c.TrafficLoader.queue[o];e.HotspotLoader.onLoad(m.key,n)}}}};e.TrafficLoader={onLoad:c.TrafficLoader.onLoad};c.GlobalTrafficControl=function(m){e.GeoObjectCollection.call(this);this._master=m};b=i(c.GlobalTrafficControl,e.GeoObjectCollection);b.show=function(m){m.addOverlay(this)};b.hide=function(){if(this._map){this._map.removeOverlay(this)}};b.setRegions=function(p){var o=[];for(var n=0,m=p.length;n<m;n++){o.push(p[n].regionId)}if(!g(o,this._getRegionIds())){this.removeAll();for(n=0,m=p.length;n<m;n++){this._addRegion(p[n])}}else{for(n=0,m=p.length;n<m;n++){this._setPlacemarkData(this.get(n),p[n])}}};b._getRegionIds=function(){var o=[];for(var n=0,m=this.length();n<m;n++){o.push(this.get(n).id)}return o};b._addRegion=function(n){var m=new e.Placemark(n.view.point);m.id=n.regionId;this._setPlacemarkData(m,n);this.add(m)};b._setPlacemarkData=function(n,m){n.regionData=m;n.master=this._master;if(!m.stat||m.stat.nodata){n.setStyle(f.semaphoreStyles.nodata)}else{n.setStyle(f.semaphoreStyles[m.stat.style||"nolevel"])}};c.LocalTrafficControl=function(m){this._timestamp=m;this._isReady=!!m;this._onReady=null;this._imageSource=new e.TileDataSource(this._getTemplate("tile"),1,0);this._imageLayer=new e.Layer(this._imageSource);k(this._imageLayer.getContainer()).css("z-index",f.zIndex);if(!f.noHotspots){this._jamSource=new c.TrafficObjectSource(this._getTemplate("hotspot"),this._getTemplate("key"),this._getTemplate("jam"));this._jamLayer=new c.TrafficHotspotLayer(this._jamSource,f.hotspots.options)}};b=c.LocalTrafficControl.prototype;b.setTimestamp=function(m){this._timestamp=m;this._imageSource.setTileUrlTemplate(this._getTemplate("tile"));if(!f.noHotspots){this._jamSource.setTileUrlTemplate(this._getTemplate("hotspot"));this._jamSource.setKeyTemplate(this._getTemplate("key"));this._jamSource.setJamUrlTemplate(this._getTemplate("jam"));this._jamSource.clearCache()}if(this._map){this._imageLayer.update();if(!f.noHotspots){this._jamLayer.update()}}if(!this._isReady&&m){this._isReady=1;if(this._onReady){this._onReady();this._onReady=null}}};b._getTemplate=function(m){return f.hotspots.templates[m].replace("%t","tm="+this._timestamp).replace("%s",this._timestamp)};b.show=function(m){if(this._isReady){this._map=m;this._map.addLayer(this._imageLayer);if(!f.noHotspots){this._map.addLayer(this._jamLayer)}this._onReady=null}else{this._onReady=function(){this.show(m)}}};b.hide=function(){if(this._isReady){if(this._map){this._map.removeLayer(this._imageLayer);if(!f.noHotspots){this._map.removeLayer(this._jamLayer);this._jamSource.clearCache()}this._map=null}}else{this._onReady=null}};j=c.TrafficHotspotObject=function(){e.Hotspots.HotspotObject.apply(this,arguments)};b=i(j,e.Hotspots.HotspotObject);b.requestHintData=function(m){c.TrafficLoader.load(this.getLayer().getJamUrl(this.getData().id),{id:this.getData().id,callback:m})};j=c.TrafficObjectSource=function(m,o,n){this.__jamUrlTemplate=n;this.__jamData={};e.Hotspots.HotspotObjectSource.call(this,m,o,{useBrowserCache:1,useProgramCache:1,programCacheEntries:f.hotspots.cacheSize})};b=i(j,e.Hotspots.HotspotObjectSource);b.setJamUrlTemplate=function(m){this.__jamUrlTemplate=m};b.getJamUrlTemplate=function(){return this.__jamUrlTemplate};b.getJamUrl=function(m){return this.__jamUrlTemplate.replace("%j",m)};b.requestJamData=function(m,n){if(!this.__jamData[n]){c.TrafficLoader.load(this.getJamUrl(n),{id:"jamInfo-"+n,context:this,callback:function(o){this.__jamData[n]=o;m(o)}})}else{m(this.__jamData[n])}};b.requestObjects=function(p,m,o,n){c.TrafficLoader.queue["x="+o.getX()+"&y="+o.getY()+"&z="+n]={old:1,key:this.getKey(o,n),tile:o};e.Hotspots.HotspotObjectSource.prototype.requestObjects.call(this,p,m,o,n)};b.__parseResponse=function(n,m){return m.old?this.__parseOldResponse(n,m):e.Hotspots.HotspotObjectSource.prototype.__parseResponse.call(this,n,m)};b.__parseOldResponse=function(t,v){var x=[],u=v.tile,r=u.getX()*e.TILE_SIZE,p=u.getY()*e.TILE_SIZE;for(var q=0;q<v.length;q++){var o=[];for(var s=0;s<v[q].poly.length;s++){var w=k.map(v[q].poly[s].split(","),function(n,m){return parseInt(n)+(m%2?p:r)});o.push(new e.Hotspots.HotspotNPolyShape(w))}x.push(new c.TrafficHotspotObject(t,o,{id:v[q].id,description:"jam-"+v[q].id}))}return x};j=c.TrafficHotspotLayer=function(n,m){e.Hotspots.HotspotLayer.call(this,n,m)};b=i(j,e.Hotspots.HotspotLayer);b.onAddToMap=function(m){e.Hotspots.HotspotLayer.prototype.onAddToMap.call(this,m);this._enableHint()};b.onRemoveFromMap=function(){this._disableHint();e.Hotspots.HotspotLayer.prototype.onRemoveFromMap.call(this)};b=c.TrafficHotspotLayer.prototype;b._enableHint=function(){this.__mouseEventListeners=[e.Events.observe(this,this.Events.MouseEnter,this._onMouseEnter),e.Events.observe(this,this.Events.MouseMove,this._onMouseMove),e.Events.observe(this,this.Events.MouseLeave,this._onMouseLeave)];this.__hintPosition=null;this.__hintObject=null;this.__hintData=null;this.__hintShown=0;this.__showTimeout=null;this.__preloadTimeout=null};b._disableHint=function(){if(this.__hintShown){this._hideHint()}l(this.__mouseEventListeners,"cleanup");this.__mouseEventListeners=[]};b._onMouseEnter=function(n,m,o){o.preventMapEvent();this.__hintObject=m;this.__hintData=null;this.__hintShown=0;this.__hintPosition=o.getLocalPixels();this._showHint()};b._onMouseMove=function(n,m,o){o.preventMapEvent();this.__hintPosition=o.getLocalPixels();if(this.__hintShown){this._moveHint(o.getLocalPixels())}};b._onMouseLeave=function(){this._hideHint();this.__clearTimeouts();this.__hintObject=null};b._showHint=function(){if(this.getMap().hint.isShown()){this._requestHintData()}else{this.__setTimeouts()}};b.__setTimeouts=function(){var n=this,m=f.hotspots.options.hintOptions;this.__clearTimeouts();this.__preloadTimeout=window.setTimeout(function(){n._requestHintData();n.__preloadTimeout=null},m.preloadTimeout);this.__showTimeout=window.setTimeout(function(){if(n.__hintData){n._quickShowHint()}n.__showTimeout=null},m.showTimeout)};b._requestHintData=function(){var p=this,m=this.__hintObject,o=m.getData().id,n=this.getObjectSource().getCachedData(o);if(n){this.__onLoadHintData(n)}else{this.getObjectSource().requestJamData(function(q){if(m==p.__hintObject){p.getObjectSource().cacheData(o,q);p.__onLoadHintData(q)}},o)}};b.__onLoadHintData=function(m){this.__hintData=m;if(!this.__showTimeout){this._quickShowHint()}};b._quickShowHint=function(){var n=this,m=this.__hintObject;this.getMap().hint.show(this.__hintPosition,e.Templates.get(f.jamDataTemplate).build(this.__hintData),k.extend({},this.getOptions().hintOptions,{onHide:function(){n.__onHideHint(m)},showTimeout:0}));this.__hintShown=1};b._moveHint=function(m){this.__hintPosition=m;if(this.__hintData&&this.__hintShown){this.getMap().hint.moveTo(m)}};b._hideHint=function(){if(this.__hintShown){this.getMap().hint.hide()}};b.__onHideHint=function(m){if(m==this.__hintObject){this.__hintObject=null;this.__hintShown=0}};b.__clearTimeouts=function(){if(this.__preloadTimeout){window.clearTimeout(this.__preloadTimeout);this.__preloadTimeout=null}if(this.__showTimeout){window.clearTimeout(this.__showTimeout);this.__showTimeout=null}};j=e.TrafficControl=function(m){this._listeners=[];this._map=null;this._timestamp=null;this._options=k.extend({hints:0},m);this.regions=[];this._showed=this._options.showOnLoad||0;this._currentRegions=[];this._localTrafficControl=new c.LocalTrafficControl(this._timestamp);this._globalTrafficControl=new c.GlobalTrafficControl(this);if(f.coverageUrl){this._loadRegionsData()}};j.NOT_INITED=0;j.GLOBAL=1;j.LOCAL=2;b=j.prototype;b.Events={Show:"show",Hide:"hide",LoadData:"loaddata",RegionChange:"regionchange",ViewSwitch:"viewswitch"};b._loadRegionsData=function(){c.TrafficLoader.load(f.coverageUrl,{id:"coverage",callback:this._onLoadRegionsDataComplete,context:this,cache:0})};b._onLoadRegionsDataComplete=function(p){this.regions=[];for(var o=0,m=p.regions.length,n;o<m;o++){n=p.regions[o];this.regions.push(n)}if(f.regionsStatUrl){this.update()}};b.update=function(){c.TrafficLoader.load(f.regionsStatUrl,{id:"stat",callback:this._onUpdateComplete,context:this,cache:0});this._setUpdateTimeout()};b._onUpdateComplete=function(q){if(q.timestamp!=this._timestamp){this._timestamp=q.timestamp;this._localTrafficControl.setTimestamp(q.timestamp);for(var p=0,n=q.regions.length;p<n;p++){var m=q.regions[p],o=this._getRegionIndex(m.regionId);if(o!=-1){this.regions[o].stat=m}}this._globalTrafficControl.setRegions(this.regions);e.Events.notify(this,this.Events.LoadData,this);this._updateRegions()}};b._getRegionIndex=function(o){for(var n=0,m=this.regions.length;n<m;n++){if(this.regions[n].regionId==o){return n}}return -1};b.getRegionData=function(n){var m=this._getRegionIndex(n);return m==-1?null:this.regions[m]};b.onAddToMap=function(m){this._map=m;this._listeners.push(e.Events.observe(m,m.Events.Update,this._onMapUpdate,this),e.Events.observe(m,m.Events.MoveEnd,this._onMapMove,this),e.Events.observe(m,m.Events.Destruct,this.onRemoveFromMap,this));this._mouseMoveListener=null;this._currentRegions=[];this._updateRegions();this._applyView();e.Events.notify(this,this.Events.ViewSwitch,this);if(this._showed){e.Events.notify(this,this.Events.Show,this)}this._setUpdateTimeout()};b.show=function(){if(!this._showed){this._showed=1;this._applyView();e.Events.notify(this,this.Events.Show,this)}};b.hide=function(){if(this._showed){this._showed=0;this._applyView();e.Events.notify(this,this.Events.Hide,this)}};b.isShown=function(){return this._showed};b._setUpdateTimeout=function(){if(this._updateTimeout){window.clearTimeout(this._updateTimeout)}var m=this;this._updateTimeout=window.setTimeout(function(){m._setUpdateListener()},f.updateTimeout)};b._setUpdateListener=function(){var m=this;this._updateTimeout=null;if(this._map&&!this._updateListener){this._updateListener=e.Events.observe(this._map,this._map.Events.MouseMove,function(){m._updateListener.cleanup();m._updateListener=null;m.update()})}};b.onRemoveFromMap=function(){for(var n=0,m=this._listeners.length;n<m;n++){this._listeners[n].cleanup()}this._listeners=[];if(this._updateTimeout){window.clearTimeout(this._updateTimeout)}if(this._updateListener){this._updateListener.cleanup()}this._localTrafficControl.hide();this._globalTrafficControl.hide();this._state=undefined;this._map=null;if(this._showed){e.Events.notify(this,this.Events.Hide,this)}};b._applyView=function(){this._state=this._calculateState();if(this._showed){if(this._map){if(this._state==e.TrafficControl.GLOBAL){this._localTrafficControl.hide();this._globalTrafficControl.show(this._map)}else{this._globalTrafficControl.hide();this._localTrafficControl.show(this._map)}}}else{this._localTrafficControl.hide();this._globalTrafficControl.hide()}};b._onMapUpdate=function(){if(this._state!=this._calculateState()){this._applyView();e.Events.notify(this,this.Events.ViewSwitch,this)}this._updateRegions()};b._onMapMove=function(){this._updateRegions()};b._updateRegions=function(){var m=this._calculateRegions();if(!g(m,this._currentRegions)){this._currentRegions=m;e.Events.notify(this,this.Events.RegionChange,this)}};b._calculateRegions=function(){var q=[];if(this._map){var o=this._map.getBounds();for(var n=0,m=this.regions.length,p;n<m;n++){p=this.regions[n];if(h(p.boundedBy,o)){q.push(p.regionId)}}}return q};b.getCurrentRegions=function(){return this._currentRegions.slice()};b.showRegion=function(n){var m=this.getRegionData(n);if(m&&this._map){this._map.setCenter(m.view.point,10)}};b._calculateState=function(){if(!this._map){return j.NOT_INITED}return this._map.getZoom()<a.localTrafficMinZoom?e.TrafficControl.GLOBAL:e.TrafficControl.LOCAL};b.getState=function(){return this._state}})(YMaps);(function(e,a,b){if(!a&&Lego){document.getElementById("map").innerHTML='<p class="b-map__error">Извините, сервис временно недоступен. Попробуйте обновить страницу.</p>';Lego.c("stred/pid=30/cid=2574")}if(!(e&&a)){return}e.noConflict();(function(f,h,g){if(!f.forEach){f.forEach=function(n,m,k){var l=n.length>>>0;for(var j=0;j<l;j++){m.call(k,n[j],j,n)}}}if(!f.map){f.map=function(o,n,l){var m=o.length>>>0,j=new f(m);for(var k=0;k<m;k++){j[k]=n.call(l,o[k],k,o)}return j}}if(!h.forEach){h.forEach=function(m,k){var l=this.length>>>0;for(var j=0;j<l;j++){m.call(k,this[j],j,this)}}}if(!h.map){h.map=function(n,l){var m=this.length>>>0,j=new f(m);for(var k=0;k<m;k++){j[k]=n.call(l,this[k],k,this)}return j}}g.bind=function(i){var j=this;return function(){return j.apply(i,arguments)}};g.forEach=function(i,l,k){for(var j in i){if(typeof this.prototype[j]==="undefined"){l.call(k,i[j],j,i)}}}})(Array,Array.prototype,Function.prototype);(function(g){var h=[],f;if(g){h.push("m-no-print-transparent");f=g.version&&g.version();if(f>=10){h.push("m-no-top-bottom")}if(f<9.6){h.push("m-flash-outline")}}if(h.length){document.documentElement.className+=" "+h.join(" ")}})(window.opera);e.event.addWithContext=function(j,i,k,h,f){var g;if(k&&k.hasOwnProperty&&k instanceof Function){f=h;h=k;k=null}if(f||k){g=h;f=f||j;h=this.proxy(g,function(){return g.apply(f,arguments)});h.data=k}this.add(j,i,h)};e.fn.bind=function(h,i,g,f){return h==="unload"?this.one(h,i,g):this.each(function(){e.event.addWithContext(this,h,i,g,f)})};e.fn.forEach=Array.prototype.forEach;(function(f){f.extend({debounce:function(h,i,j,g){if(arguments.length==3&&typeof j!="boolean"){g=j;j=false}var k;return function(){var l=arguments;if(j&&!k){h.apply(g,l)}clearTimeout(k);k=setTimeout(function(){if(!j){h.apply(g,l)}k=null},i)}},throttle:function(j,k,i){var l,h,g;return function(){h=arguments;g=true;if(!l){(function(){if(g){j.apply(i,h);g=false;l=setTimeout(arguments.callee,k)}else{l=null}})()}}}})})(e);(function(f){f.fn.detach=function(){return this.each(function(g){if(!g||f.filter(g,[this]).length){if(this.parentNode){this.parentNode.removeChild(this)}}},arguments)}})(e);(function(f){f.fn.ieHover=f.browser.msie&&f.browser.version<7?function(g){return this.hover(function(){f(this).addClass(g)},function(){f(this).removeClass(g)})}:function(){return this}})(e);(function(i,h,g,f){i.fromJson=h.fromJson=function(j){return j&&new this(j[0],j[1])};g.fromJson=function(j){return j&&new g(h.fromJson(j[0]),h.fromJson(j[1]))};g.fromGeoBoundsList=function(l){var j,n,k,m;if(!l||!l.length){return}m=k=-Infinity;n=j=+Infinity;Array.forEach(l,function(o){m=Math.max(m,o.getTop());n=Math.min(n,o.getLeft());k=Math.max(k,o.getRight());j=Math.min(j,o.getBottom())});return new g(new h(n,j),new h(k,m))};f.fromData=function(k){var j;if(typeof k==="string"){j=a.Styles.get(k)}else{j=new f();if(k.lineStyle){j.lineStyle=new a.LineStyle();e.extend(j.lineStyle,k.lineStyle)}}return j}})(a.Point,a.GeoPoint,a.GeoBounds,a.Style);(function(f){f._onAddToToolBar=f.onAddToToolBar;f.onAddToToolBar=function(h,i){var g=this;this._onAddToToolBar(h,i);this.getElement().unbind("click").find(".YMaps-btn-name").bind("click",function(){g[g.__expanded?"collapse":"expand"]()})}})(a.ListBox.prototype);a.Observers=function(){this._items=[]};e.extend(a.Observers.prototype,{add:function(g,k,l,j,f){k=k.split(" ");for(var h=0;h<k.length;h++){this._items.push(a.Events.observe(g,g.Events[k[h]],l,j,f))}},destroy:function(){while(this._items.length){this._items.pop().cleanup()}}});(function(f,h){var g=function(i){this._context=i;this._element=h('<div><div class="YMaps-compact-icon"></div></div>');this.update()};h.extend(g.prototype,{onAddToParent:function(i){this._element.appendTo(i)},onRemoveFromParent:function(){this._element.remove()},setContent:function(i){if(this._content){this._content.onRemoveFromParent()}if(i){i.onAddToParent(this._element.children()[0])}this._content=i},update:function(){var j,i,l,k;k=this._context.getComputedStyle();i=k.iconContentStyle;l=k.iconStyle;j=h.browser.msie&&h.browser.version<7?{filter:'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+l.href+'",sizingMethod="scale")'}:{backgroundImage:"url("+l.href+")"};j.width=l.size.x+"px";j.height=l.size.y+"px";this._element.css(j).children().css({color:i.color,width:i.width+"px"})}});f.Templates.add("compact#icon",new f.LayoutTemplate(g));"blue,darkblue,darkorange,green,night,red,violet,".concat("grey,lightblue,orange,pink,white,yellow").split(",").forEach(function(j,k){var l=f.Styles.get("default#"+j+"Point");l=f.Style.copy(l);l.iconStyle.template="compact#icon";l.iconContentStyle={color:k<7?"white":"black",width:22};f.Styles.add("compact#"+j+"Point",l)})})(a,a.jQuery);a.ListBoxSeparator=function(){};a.jQuery.extend(a.ListBoxSeparator.prototype,{onAddToToolBar:function(f,g){this._parent=a.jQuery(g).addClass("YMaps-listbox-separator");this._parent.append('<div class="YMaps-listbox-separator-line"></div>')},onRemoveFromToolBar:function(){this._parent.empty();delete this._parent}});b.implement({bind:function(h,i,g,f){e.event.addWithContext(this,h,i,g,f);return this},unbind:function(g,f){e.event.remove(this,g,f);return this},trigger:function(f,k){var o,p,h,l,j,g,m,n;n=f.type||f;f=typeof f==="object"?f.preventDefault?f:e.extend(e.Event(n),f):e.Event(n);if(n.indexOf("!")>=0){f.type=n=n.slice(0,-1);f.exclusive=true}f.result=undefined;f.target=this;k=e.makeArray(k);k.unshift(f);f.currentTarget=this;g=f.type.split(".");f.type=g.shift();o=!g.length&&!f.exclusive;j=new RegExp("(^|\\.)"+g.slice().sort().join(".*\\.")+"(\\.|$)");h=(e.data(this,"events")||{})[f.type];if(h){for(l in h){p=h[l];if(o||j.test(p.type)){f.handler=p;f.data=p.data;m=p.apply(this,k);if(m!==undefined){f.result=m;if(m===false){f.preventDefault();f.stopPropagation()}}}}}return this},_delete:function(){var h,g,f;h=arguments.length;while(h--){g=arguments[h];f=this[g];if(f&&f.destroy){f.destroy()}delete this[g]}}});b.prototype.destroy=b.prototype.unbind;var d=window.Utils={capitalize:function(f){return f&&f.charAt(0).toUpperCase()+f.slice(1)},cdata:function(f){return"<![CDATA["+String(f).split("]]>").join("]]&gt;")+"]]>"},decline:function(h,i,j,k){var g,f;g=h%10;f=h%100;k=k||j;return f>=5&&f<=20?k:g>=2&&g<=4?j:g===1?i:k},escapeHtml:function(f){return String(f).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;")},humanDate:function(f){var g=f.getMonth()+1;return[f.getDate(),(g<10?"0"+g:g),f.getFullYear()].join(".")},humanTime:function(f){var g=f.getMinutes();return f.getHours()+":"+(g<10?"0"+g:g)},nl2br:function(f){return String(f).split("\n").join("<br/>\n")},NULL:function(){return null},query:function(h){var f,g;g=[];for(f in h){if(h[f]){g.push(f+"="+encodeURIComponent(h[f]))}else{if(h[f]===null){g.push(f)}}}return g.join("&")},wbr:function(f){return String(f).replace(/(\S{25})/g,"$1<wbr></wbr>")}};var c=window.Maps={};c.modules={dc:{name:"dc",js:"//api-maps.yandex.ru/dc/dc.js"},swfobject:{name:"swfobject",js:"//swf.static.yandex.net/swfobject/2.2-yandex1/_swfobject.js",complete:function(){var g=document,f;if(e.browser.opera&&g.createEvent){f=g.createEvent("MutationEvents");f.initMutationEvent("DOMContentLoaded",1,1,g,"","","",0);g.dispatchEvent(f)}}}};c.require=function(i,j,h){var g,f;g=0;f=e.map(i.split(" "),function(k){return c.modules[k]||null});f.forEach(function(k){if(k.loaded){if(++g===f.length){j.call(h)}}else{e.xLazyLoader(e.extend({success:function(){k.loaded=true;if(++g===f.length){j.call(h)}}},k))}})};c.Application=b.extend({constructor:function(){this.map=c.Map(a.map).init();delete a.map;this.panel=e("#panel").bind("click",this.onLinkClick,this);this.root=document.location.href.match("^[^/]+//[^/]+/")[0];this.services={allmaps:new c.Allmaps(this),feedback:new c.Feedback(this),geocoder:new c.Geocoder(this),router:new c.Router(this),mymaps:new c.Mymaps(this),bizfinder:new c.Bizfinder(this)};this.locationClicker=new c.LocationClicker(this.map,this);if(e.browser.mozilla){e(window).resize(function(){e("#map").parent().toggleClass("g-touch-box")})}e("#b-head-menu").bind("click",{source:"tab"},this.onLinkClick,this);setInterval(function(){var k,f,l,h,j,n,g,m;l=document.getElementById("b-search_geocoder");h=l.parentNode.getElementsByTagName("form");for(k=0;k<h.length;k++){if(h[k].offsetHeight){l=h[k];break}}m="";f=l.getElementsByTagName("input");for(k=0;k<f.length;k++){if(f[k].type==="text"&&f[k].value){m=f[k].value;break}}if(m){n=this.map.getCenter().toString();g=this.map.getBounds().getSpan().toString(6)}for(k in (j=this.services)){if(j[k]!==this.service&&j[k].updateTab){j[k].updateTab(m,n,g)}}}.bind(this),200);e("#metroTab").bind("focus mouseover",function(g){var f=g.currentTarget;f.href=f.href.split("?")[0]+"?"+d.query({sll:this.map.getCenter().toString()})},this);Lego.block["b-hl-print"].setUrl(function(){return this.getUrl("print/",{ll:this.map.getCenter().toString(),z:this.map.getZoom()})}.bind(this));Lego.block["b-hl-permalink"].setUrl(this.getUrl.bind(this));Lego.block["b-hl-permalink"].setApiParams(this.map.getUrlParams.bind(this.map));Lego.block["b-auth-domik_popup"].setRetpath(this.getUrl.bind(this));this._sidebarOn=true;e("#switcher").bind("click",function(){this.toggleSidebar(!this._sidebarOn);return false},this);e("#foot-links").removeClass("g-hidden").bind("click",this.onLinkClick,this)},setPage:function(i,g,j){var h,f;this.isHomePageSet=g;i=i.split("<![CDATA[").join("").split("]]>").join("");h=window["eval"]("("+i+")");f=this.services[h.service.name]||this.service;if(this.service){this.service.clear();if(this.service!==f){this.service.disable()}}this.map.setData(h.map,j);this.panel.parent().attr("scrollTop",0);this.toggleSidebar(true);document.title=h.title;if(this.service!==f){this.service=f;this.service.enable()}this.service.setData(h.service.data,j);delete this.map.isCentered},setHomePage:function(f){if(!this.isHomePageSet){this.setPage(e('script[type="application/json"]')[0].text,1,f)}},toggleBanner:function(f){e("#banner").toggleClass("g-hidden",!f);e("#foot-links").toggleClass("b-foot-links_full",f)},toggleSidebar:function(f){if(f!==this._sidebarOn){e("#page").toggleClass("b-page_off",!f);e("#switcher").toggleClass("b-sidebar-switcher_off",!f).attr("title",(f?"Свернуть":"Развернуть")+" колонку");if(!f){Lego.c("stred/pid=30/cid=2809")}this._sidebarOn=f;this.map.redraw()}},loadUrl:function(f){if(f){e("#loader").attr("src",f+(f.indexOf("?")<0?"?":"&")+"output=js")}return false},setBeforeUnloadWarning:function(g){var f=e("#loader")[0].contentWindow;if(e.browser.msie){f=f.document.body}f.onbeforeunload=g||null},getUrl:function(h,k){var j,f,i,g;i=this.service.getUrlParams?this.service.getUrlParams():{};e.extend(i,this.map.getUrlParams(),k);h=h||i.path||"";delete i.path;g=[];for(f in i){if(i[f]){g.push(f+"="+encodeURIComponent(i[f]))}else{if(i[f]===null){g.push(f)}}}j=h.indexOf("?")===-1?"?":"&";return this.root+h+j+g.join("&")},_updateUrl:function(f){return f.replace(/\=http.*/,"="+encodeURIComponent(this.getUrl()))},onLinkClick:function(f){e(f.target).closest("[href]").forEach(function(h){var g=h.href;if(!h.hostname||h.hostname===location.hostname){if(f.data){g+=g.indexOf("?")<0?"?":"&";g+=d.query(f.data)}this.loadUrl(g)}else{window.open(g)}f.stopPropagation();f.preventDefault();h.blur()},this)}});c.List=b.extend({constructor:function(){this.base();this.length=0}},{init:function(){"forEach,map,slice,push,pop,splice".split(",").forEach(function(f){this.prototype[f]=Array.prototype[f]},this)}});c.Hint=b.extend({constructor:function(k,f,j,g){var l,i,h;this._map=k;this._options=g=e.extend({direction:c.Hint.NONE,timeout:3},g||{});i="b-tooltip-arrow";h=g.direction?i+"_"+g.direction:"";arr=i+"__arr "+i+"__arr_"+(f.anchor&1?"r":"l");l='<i class="'+i+'__bit"><i></i></i>';this._element=e('<div class="h-tooltip h-tooltip_hint"><div><table class="'+i+(h&&" "+h)+'"><tr class="'+i+'__head"><td class="'+i+'__l">'+l+'</td><td class="'+i+'__m"></td><td class="'+i+'__r">'+l+'</td></tr><tr class="'+i+'__body"><td class="'+i+'__l"></td><td class="'+i+'__m">'+(h?'<i class="'+arr+'"><i></i></i>':"")+'<div class="'+i+'__content">'+j+'</div></td><td class="'+i+'__r"></td></tr><tr class="'+i+'__foot"><td class="'+i+'__l">'+l+'</td><td class="'+i+'__m"></td><td class="'+i+'__r">'+l+"</td></tr></table></div></div>").bind("mouseenter",this._clearTimeout,this).bind("mouseleave",this._setTimeout,this).bind("contextmenu",this._onContextMenu,this);f.apply(this._element[0]);this._onDocumentKeyUp=function(m){if(m.which===27){this.hide()}}},destroy:function(){this.hide(true);this._element.remove()},show:function(){this.hide();this._element.css("display","block").appendTo(this._map.getContainer());e(document).bind("keyup",this._onDocumentKeyUp,this);this._setTimeout();this._shown=true},hide:function(f){if(this._shown){delete this._shown;this._clearTimeout();e(document).unbind("keyup",this._onDocumentKeyUp);if(f&&!e.browser.msie){this._element.fadeOut("normal",this._hide.bind(this))}else{this._hide()}}},_hide:function(){this._element.detach()},_setTimeout:function(){this._timeout=setTimeout(function(){this.hide(true)}.bind(this),this._options.timeout*1000)},_clearTimeout:function(){clearTimeout(this._timeout)},_onContextMenu:function(){this.hide();return false}},{NONE:"",UP:"t",RIGHT:"r",DOWN:"b",LEFT:"l"});c.Popup=b.extend({constructor:function(g){var h,f;f="b-tooltip";h='<i class="bit"><i></i></i>';this._element=e('<div class="h-tooltip"><table class="'+f+" "+f+"_"+g+'"><tbody><tr class="'+f+'-head"><td class="'+f+'-l">'+h+'</td><td class="'+f+'-m">'+h+'</td><td class="'+f+'-r">'+h+'</td></tr><tr class="'+f+'-headline"><td class="'+f+'-l">'+h+'</td><td class="'+f+'-m"><div class="headline g-line"><img class="close" title="Закрыть" alt="[x]" src="/i/close.gif"></div></td><td class="'+f+'-r">'+h+'</td></tr><tr class="'+f+'-body"><td class="'+f+'-l">'+h+'</td><td class="'+f+'-m content"></td><td class="'+f+'-r">'+h+'</td></tr><tr class="'+f+'-foot"><td class="'+f+'-l">'+h+'</td><td class="'+f+'-m">'+h+'</td><td class="'+f+'-r">'+h+"</td></tr></tbody></table></div>");this._content=this._element.find("td.content");this._closer=this._element.find("img.close").bind("click",this.close,this);this._isOpen=false;this._onWindowResize=function(){this._updatePosition()};this._onDocumentKeyUp=function(i){if(i.which===27){this.close()}}},destroy:function(){this.close();this._element.remove()},open:function(g,f){if(this._isOpen){this.close()}this._closer.after(g);this._content.html(f);this._element.css("visibility","hidden").appendTo(document.body);this._updatePosition();e(window).bind("resize",this._onWindowResize,this);e(document).bind("keyup",this._onDocumentKeyUp,this);this._isOpen=true},close:function(){if(this._isOpen){this.trigger("BeforeClose");e(document).unbind("keyup",this._onDocumentKeyUp);e(window).unbind("resize",this._onWindowResize);this._element.detach();this._closer.nextAll().remove();this._content.empty();this._isOpen=false}},_updatePosition:function(){var g,i,j,k,f,h;i=this._element;g=e(document.body);i.css({visibility:"hidden",top:-1000,left:-1000});h=new a.Point(i.width(),i.height());k=new a.Point(g.width(),g.height());f=k.copy().moveBy(h.copy().neg()).scale(0.5);j=15;f.x=Math.min(f.x,k.x-h.x-j);f.y=Math.max(f.y,j);i.css({top:f.y+"px",left:f.x+"px",visibility:""})}});c.Pager=b.extend({constructor:function(i){var j,n,g,h,l,k,f,m;n=i.itemsCount||0;g=i.itemsOffset||0;h=i.itemsOnPage||10;m=i.pagesOnList||7;k=Math.floor(g/h);f=Math.ceil(n/h);k=Math.min(Math.max(0,k),f-1);j=Math.max(0,k-Math.floor(m/2));l=Math.min(f-1,j+m-1);j=Math.max(0,l-m+1);j-=j===1;l+=l===f-2;this.extend({itemsCount:n,itemsOffset:g,itemsOnPage:h,page:k,pagesCount:f,pagesOnList:m,first:j,last:l,prev:k?k-1:null,next:k<f-1?k+1:null,head:j?j-1:null,tail:l<f-1?l+1:null})}});c.PagerView=b.extend({constructor:function(h,f,m){var k,j,l,n,g,o;k="b-pager";o=f.indexOf("?")===-1?"?":"&amp;";l=function(i,p){g=i?o+"skip="+i*h.itemsOnPage:"";return'<a class="'+k+'__page" href="'+f+g+'">'+p+"</a>"};n=[];if(h.head!==null){n.push(l(h.head,"\u2026"))}for(j=h.first;j<h.page;j++){n.push(l(j,j+1))}n.push('<b class="'+k+'__current">'+(h.page+1)+"</b>");for(j=h.page+1;j<=h.last;j++){n.push(l(j,j+1))}if(h.tail!==null){n.push(l(h.tail,"\u2026"))}this._element=e(h.pagesCount>1?'<div class="'+k+'"><div class="'+k+'__pages">'+n.join("")+"</div></div>":[]).appendTo(m)},destroy:function(){this._element.remove()}});c.PointClicker=b.extend({constructor:function(h,g){var f,i;this._map=h;this._content=g;this._button=f=new a.ToolBarRadioButton("default",g);this._defaultButton=h.toolBar.getByGroupId("default")[0];this._cursor=g.cursor||a.Cursor.ARROW;if(g.show!==false){this.show()}i=new a.Observers();i.add(f,"Select",this._onButtonSelect,this);i.add(f,"Deselect",this._onButtonDeselect,this);f._onClick=function(j){if(j.isSelected()){h.toolBar.getByGroupId("default")[0].select()}else{j.select()}};this._clickListener=a.Events.observe(h,h.Events.Click,this._onMapClick,this,false)},show:function(){if(!this._shown){this._map.toolBar.add(this._button,this._content.index);this._shown=true;if(this._doSelect){this.select();delete this._doSelect}}},hide:function(){var f;if(this._shown){if(this.isSelected()){this.deselect();this._doSelect=true;this._defaultObservers=f=new a.Observers();f.add(this._defaultButton,"Deselect",function(){this._delete("_defaultObservers","_doSelect")},this)}this._map.toolBar.remove(this._button);delete this._shown}},enable:function(){this._button.enable()},disable:function(){this.deselect();this._button.disable()},select:function(){if(!this.isSelected()){if(this._shown){this._button.select()}else{this._doSelect=true}}},deselect:function(){if(this.isSelected()){this._defaultButton.select()}else{delete this._doSelect}},isSelected:function(){return !!this._button.isSelected()},_onButtonSelect:function(){this._map.addCursor(this._cursor);this._clickListener.enable();this.trigger("Select")},_onButtonDeselect:function(){this._map.removeCursor(this._cursor);this._clickListener.disable();this.trigger("Deselect")},_onMapClick:function(f,g){g.getEvent().stopPropagation();this.trigger("Click",[g.getGeoPoint(true)])}});c.Selectable={selectedIndex:null,getSelectedItem:function(){return this[this.selectedIndex]},selectAt:function(f){if(f===this.selectedIndex){this.clearSelection()}else{if(this[f]){this.clearSelection();this.selectedIndex=f;this.trigger("Select",[this[f],f])}}},clearSelection:function(){var f;if((f=this.selectedIndex)!==null){this.selectedIndex=null;this.trigger("Deselect",[this[f],f])}}};c.Map=b.extend({init:function(){var g,h,i,f;g=this.getContainer().onclick();this.isCentered=!!g.ll;this.addControl((this.toolBar=new a.ToolBar([this._createButton("move","Переместить карту",0,1),this._createButton("magnifier","Увеличить",1,0),this._createButton("ruler","Измерить расстояние",1,0)])));this._layers=h=new c.LayerListBox(g,this);this.traffic=h.getControl("trf");this.panoramas=h.getControl("stv");f=new a.ToolBar([]);f.add(new c.TrafficButton(this.traffic));f.add(h);f.add(new c.TypeListBox());this.addControl(f,new a.ControlPosition(a.ControlPosition.TOP_RIGHT,new a.Point(5,5)));this._setPlacemarks(g.pt);i=new a.Observers();this.isMoved=1;i.add(this,"BoundsChange",function(){this.isMoved=1},this);if(g.hint){e.ajax({dataType:"json",url:"/actions/get-map-hint/",data:{id:g.hint},success:this._showHint.bind(this)})}i.add(this,"TypeChange",this._onTypeChange);i.add(this.toolBar.getByGroupId("default")[1],"Select",function(){Lego.c("stred/pid=30/cid=2663")});i.add(this,"MouseDown",function(){e(document).trigger("popupsClose.lego")});if(e.browser.msie){e(window).bind("load",function(){this.redraw()},this)}return this},setData:function(f,g){if(!g){this._setCenterByData(f)}this.isMoved=1},_setCenterByData:function(h){var g,f;if(h.ll&&h.spn){this.setBounds(a.GeoBounds.fromCenterAndSpan(a.GeoPoint.fromJson(h.ll),a.Point.fromJson(h.spn)))}else{if(h.bb){g=a.GeoBounds.fromJson(h.bb);f=g.getMapZoom(this);f=h.maxZoom?Math.min(h.maxZoom,f):f;this.setCenter(g.getCenter(),f)}else{if(h.ll){this.setCenter(a.GeoPoint.fromJson(h.ll),h.zoom)}}}},getCenterByOffset:function(g){var f=this.converter.coordinatesToLocalPixels(this.getCenter());return this.converter.localPixelsToCoordinates(f.moveBy(g))},types:[a.MapType.MAP,a.MapType.SATELLITE,a.MapType.HYBRID],_onTypeChange:function(){if(this.getType()===this.types[0]&&this.getZoom()===18){this.setZoom(17)}},getUrlParams:function(){var f,g;g={};f=this._layers;if(this.isMoved){g.ll=this.getCenter().toString();g.spn=this.getBounds().getSpan().toString(6);g.z=this.getZoom()}e.extend(g,{l:this.getType().getLayers().concat(f.toArray()).join(","),pt:this._getPlacemarks(),rl:this.getRulerState()},f.getUrlParams());return g},_createButton:function(i,k,h,j){var g,f;g=new a.ToolBarRadioButton(a.ToolBar.DEFAULT_GROUP,{icon:"/i/buttons/"+i+".png",hint:k,width:19},{selected:j});if(h){f=d.capitalize(i);g.onAddToToolBar=function(l,m){a.ToolBarRadioButton.prototype.onAddToToolBar.call(this,l,m);a.Events.observe(this,this.Events.Select,function(){l.getMap()["enable"+f]()});a.Events.observe(this,this.Events.Deselect,function(){l.getMap()["disable"+f]()})}}return g},_param2color:{bl:"blue",db:"darkblue","do":"darkorange",gn:"green",gr:"gray",lb:"lightblue",nt:"night",or:"orange",pn:"pink",rd:"red",vv:"violet",wt:"white",yw:"yellow"},_setPlacemarks:function(f){if((this._placemarks=f)){f.split("~").forEach(function(h){var g,i;i=h.split(",");g=i[2]&&this._param2color[i[2].substr(2,2)];this.addOverlay(new a.Placemark(new a.GeoPoint(+i[0],+i[1]),{style:g&&"default#"+g+"Point",hasBalloon:false}))},this)}},_getPlacemarks:function(){return this._placemarks},_showHint:function(f){(new c.Hint(this,new a.ControlPosition(a.ControlPosition[f.position],a.Point.fromString(f.offset)),'<div class="b-helpful b-helpful_promo"><b class="icon" style="background-image:url('+f.url+')"></b><div class="b-helpful_promo__text">'+f.text+"</div></div>",{direction:c.Hint[f.direction],timeout:10})).show()}});c.TypeListBox=b.extend(a.ListBox.prototype).extend({constructor:function(){this.base({width:80})},onAddToToolBar:function(f,g,i){var j,h;h=f.getMap();j=new a.Observers();j.add(h,"TypeChange",function(){this.setCaption(h.getType().getName());return arguments.callee}.call(this),this);this.base(f,g,i);h.types.forEach(function(k){var l=new a.ListBoxItem(k.getName());j.add(l,"Click",function(){h.setType(k);this.collapse()},this);this.add(l)},this)}});c.LayerListBox=b.extend(a.ListBox.prototype).extend({constructor:function(g,h){var i,f;this.base({caption:"Показать\xA0на\xA0карте",width:140});this._allControls=[(f=new a.TrafficControl({showOnLoad:0,hints:1})),new c.JunctionControl(g.url,g.jnc,h),new c.CameraControl(g.url,g.cmr,h),new c.Panoramas(g.url,g.pnr,h),new c.GridControl(g.url,g.grd,h)];this._controls=[];this._items=[];i=new a.Observers();f.id="trf";(new c.TrafficCounter(f));(new c.TrafficHint(f,h));f.bind=function(k,l,j){i.add(this,k,l,j)};this.add((this._infoLayers=new c.InfoLayers(g,this)));this.add((this._layerHider=new c.LayerHider(this)));this._allControls.forEach(function(k){var j;if(k.name){j=new a.ListBoxToggleItem(" "+k.name);i.add(j,"Select",k.show,k);i.add(j,"Deselect",k.hide,k);k.bind("Show Hide",this._onSelectionChange,this);k.bind("Show",j.select,j);k.bind("Hide",j.deselect,j);this._controls.push(k);this._items.push(j)}if(k.onAddToMap){h.addControl(k)}if(g.l.indexOf(k.id)>=0){k.show()}},this);i.add(h,"BoundsChange",this._onBoundsChange,this);this._infoLayers.bind("Select Deselect",this._onSelectionChange,this)},toArray:function(){return e.map(this._allControls,function(f){return f.isShown()?f.id:null})},onAddToToolBar:function(f,g){this.base(f,g);this._parent=e(g);this._onBoundsChange(f.getMap())},expand:function(){this.base();this.trigger("Expand");Lego.c("stred/pid=30/cid=2852")},getControl:function(f){return e.grep(this._allControls,function(g){return g.id===f})[0]},getUrlParams:function(){return e.extend.apply(e,[{},{}].concat(e.map(this._allControls,function(f){return f.isShown()&&f.getUrlParams&&f.getUrlParams()||null}),this._infoLayers.getUrlParams()))},_onBoundsChange:function(g){var f=0;this.collapse();this._items.forEach(function(i,h){if(!i.getListBox()===this._controls[h].covers(g)){if(!i.getListBox()){this.add(i,f)}else{this.remove(i)}}if(i.getListBox()){f++}},this);this._parent.toggleClass("g-hidden",!this.length());this._onSelectionChange()},_onSelectionChange:function(){var f;f=0;this.forEach(function(g){f+=g.isSelected?g.isSelected():0});this._layerHider[f?"enable":"disable"]()}});c.LayerHider=b.extend({constructor:function(f){this._separator=new a.ListBoxSeparator();f.add(this._separator)},onAddToToolBar:function(f,g,h){this._parent=e(g).addClass("b-map__layer_disabled");this._link=e("<span><span>Скрыть все слои</span></span>").appendTo(g).bind("click",function(i){h.forEach(function(j){if(j.deselect){j.deselect()}})});if(this._doEnable){this._enable();delete this._doEnable}},enable:function(){if(this._parent){this._parent.removeClass("b-map__layer_disabled");this._link.addClass("b-pseudo-link")}else{this._doEnable=true}},disable:function(){if(this._parent){this._link.removeClass("b-pseudo-link b-pseudo-link_hover");this._parent.addClass("b-map__layer_disabled")}else{delete this._doEnable}}});c.Coverage=b.extend({constructor:function(f){this._regions=f.regions.map(function(g){return{geoBounds:a.GeoBounds.fromJson(g.bb)}})},covers:function(k){var h,j,g,f;f=false;g=k.getBounds(true);for(j=0;j<this._regions.length&&!f;j++){h=this._regions[j].geoBounds;f=g.getLeft()<=h.getRight()&&g.getRight()>=h.getLeft()&&g.getBottom()<=h.getTop()&&g.getTop()>=h.getBottom()}return f}});c.ALayer=b.extend({constructor:function(f,g,h){this.base();this._url=f;this._zoomRange=g.zoomRange;this._coverage=g.coverage&&new c.Coverage(g.coverage);this._map=h;this._shown=false},covers:function(h){var g,f;g=h.getZoom();f=this._zoomRange;return f&&g>=f[0]&&g<=f[1]&&(!this._coverage||this._coverage.covers(h))},show:function(){if(!this._observers){this._observers=new a.Observers();this._observers.add(this._map,"BoundsChange",this._onBoundsChange,this);this._onBoundsChange();this.trigger("Show")}},hide:function(){if(this._observers){if(this._shown){this._hide();this._shown=false}this._delete("_observers");this.trigger("Hide")}},isShown:function(){return !!this._observers},_onBoundsChange:function(){if(this._shown!==this.covers(this._map)){this[this._shown?"_hide":"_show"]();this._shown=!this._shown}}});c.JunctionControl=c.ALayer.extend({constructor:function(f,g,h){this.base(f,g,h);this.id="jnc";this.name="Развязки";this._version=g.version;this._staticUrl=g.staticUrl},_show:function(j){var h,g,i,f;i=this._map;f=this._version;this._imageLayer=g=new a.Layer(new a.TileDataSource(this._url+"tiles?l=jnc&%c&tm="+f,1,0));this._hotspotLayer=h=new a.Hotspots.HotspotLayer(new c.JunctionObjectSource(this._url+"tiles?l=jnj&%c&tm="+f,"%c&l=jnj&tm="+f),{priority:2,hasHint:1,hasBalloon:0});i.addLayer(g);i.addLayer(h);this._hsObservers=new a.Observers();this._hsObservers.add(h,"Click",this._onLayerClick,this);this._imageLayer.getContainer().style.zIndex=a.ZIndex.MAP_LAYER+3;this._popup=new c.Popup("junctions");this._popup.bind("BeforeClose",this._closePlayer,this)},_hide:function(){this._delete("_popup","_hsObservers");this._map.removeLayer(this._hotspotLayer);this._map.removeLayer(this._imageLayer);this._delete("_hotspotLayer","_imageLayer")},_onLayerClick:function(i,g,j){var k,f,h;j.preventMapEvent();i.getMap().hint.hide(0);k=g.getData();f=c.JunctionControl.locale;h=a.Size.fromJson(k.description.split(" "));this._popup.close();this._popup.open('<table class="links"><tbody><tr><td class="links-r"><a href="http://help.yandex.ru/maps/?id=1053665" target="_blank">'+f.help+"</a></td></tr></tbody></table>",'<div style="width:'+h.x+"px;height:"+h.y+'px"><div id="junction"></div></div>');c.require("swfobject",function(){this._openPlayer(k,h)},this);Lego.cp(30,2575,k.provider)},_openPlayer:function(h,g){var f=this._staticUrl+"jnc/"+h.provider.slice(-2)+"/";if(swfobject.hasFlashPlayerVersion("7.0.0")){swfobject.embedSWF(f+h.id+".swf","junction",g.x,g.y,"7.0.0",false,false,{allowScriptAccess:"sameDomain",bgcolor:"#FFFFFF",quality:"high"},{align:"middle"})}else{e("#junction").replaceWith('<img width="'+g.x+'" height="'+g.y+'" src="'+f+h.id+'.gif"/>')}},_closePlayer:function(){swfobject.removeSWF("junction")}},{locale:{help:"Как пользоваться схемой",link:"Ссылка на схему"}});c.JunctionObject=b.extend(a.Hotspots.HotspotObject.prototype).extend({requestHintData:function(f){f(this.getData().name)}});c.JunctionObjectSource=b.extend(a.Hotspots.HotspotObjectSource.prototype).extend({createHotspotObject:function(h,f,i,g){return new c.JunctionObject(h,f,i,g)}});c.Cameras=c.List.extend({constructor:function(f){this.base();this._provider=f.provider;this._ids=f.id},destroy:function(){this._unload()},load:function(f){this._unload();this._request=e.ajax({dataType:"json",url:"/actions/get-cameras/",data:{provider:this._provider,ids:this._ids,oid:f||""},success:this._onLoad.bind(this),error:this._onError.bind(this)});return this},_unload:function(){if(this._request){this.clearSelection();this._request.abort();delete this._request}},_onLoad:function(f){var g,h;this.push.apply(this,f.cameras);h=this.length;for(g=0;g<h;g++){if(f.oid?this[g].id===f.oid:this[g].active){break}}this.trigger("Load",[g<h?g:null])},_onError:function(){this.trigger("Error")}},{getStream:function(l){var f,g,j,k,h;f=c.DC+".maps";k=e.map(l,function(i){return i.videoUrl.indexOf(f)>-1?i:null});l=k.length?k:l;for(g=0,h=0;g<l.length;g++){h+=l[g].weight}j=Math.random()*h;for(g=0,h=0;g<l.length-1&&h<j;g++){h+=l[g].weight}return l[g]}});c.Cameras.implement(c.Selectable);c.CameraControl=c.ALayer.extend({constructor:function(f,g,h){this.base(f,g,h);this.id="cmr";this.name="Видеокамеры";this._region=g.region;this._version=g.version;this._hotspot=g.hotspot},getUrlParams:function(){return this._balloon&&this._balloon.getUrlParams()},_show:function(){var h,g,i,f;i=this._map;f=this._version;this._imageLayer=g=new a.Layer(new a.TileDataSource(this._url+"tiles?l=cmr&%c&tm="+f,1,0));this._hotspotLayer=h=new a.Hotspots.HotspotLayer(new c.CameraObjectSource(this._url+"tiles?l=cmj&%c&tm="+f,"%c&l=cmj&tm="+f),{priority:2,hasHint:1,hasBalloon:0});this._balloon=new c.CameraBalloon(i,this._region);i.addLayer(g);i.addLayer(h);this._hsObservers=new a.Observers();this._hsObservers.add(h,"Click",this._onLayerClick,this);this._imageLayer.getContainer().style.zIndex=a.ZIndex.MAP_LAYER+3;if(this._hotspot){this._hotspot.center=a.GeoPoint.fromJson(this._hotspot.ll);this._balloon.open(this._hotspot);delete this._hotspot}},_hide:function(){this._delete("_hsObservers");this._map.removeLayer(this._hotspotLayer);this._map.removeLayer(this._imageLayer);this._delete("_balloon","_hotspotLayer","_imageLayer")},_onLayerClick:function(g,f,i){var h;i.preventMapEvent();g.getMap().hint.hide(0);h=this._balloon.getData();if(!h||f.getData().id!==h.id){this._balloon.open(f.getData())}}});c.CameraObject=b.extend(a.Hotspots.HotspotObject.prototype).extend({requestHintData:function(f){f(this.getData().name)}});c.CameraObjectSource=b.extend(a.Hotspots.HotspotObjectSource.prototype).extend({createHotspotObject:function(h,f,i,g){return new c.CameraObject(h,f,i,g)}});c.CameraBalloon=b.extend({constructor:function(g,f){this.base();this._map=g;this._region=f},destroy:function(){this.close();this.base()},open:function(f){this.close();this._map.openBalloon(f.center,"Идет загрузка…",{onClose:this.close.bind(this),margin:[50,10,20,33]});window.getNewStreamUrl=function(){this._load(this._cameras.getSelectedItem().id)}.bind(this);this._data=f;c.require("dc swfobject",function(){this._load(f.state&&f.state.split(":")[1])},this)},close:function(){if(this._data){this._unload();delete this._data;window.getNewStreamUrl=null;this._delete("_observers");this._map.closeBalloon()}},getData:function(){return this._data},getUrlParams:function(){var f=this._cameras&&this._cameras.getSelectedItem();return f&&{ol:"cmr",oll:f.ll,ost:"id:"+f.id}},_load:function(f){this._unload();this._element=e('<div class="b-location-balloon"><table><tr><td><div class="movie-player"></div></td><td><div class="movie-info g-hidden"></div></td></tr></table></div>');this._player=this._element.find(".movie-player");this._info=this._element.find(".movie-info");this._cameras=new c.Cameras(this._data).bind("Load",this._onLoad,this).bind("Error",this._onError,this).bind("Select",this._onCameraSelect,this).bind("Deselect",this._onCameraDeselect,this).load(f)},_unload:function(){if(this._cameras){this._cameras.clearSelection();e("#camera").forEach(function(f){if(f.stopPlayback){f.stopPlayback()}swfobject.removeSWF(f.id)});this._player.empty();this._element.remove();this._delete("_cameras")}},_onLoad:function(i,f){var h,g,j;g=i.currentTarget;h=g[f];j=h&&c.Cameras.getStream(h.streams);this._info.toggleClass("g-hidden",!h);if(h){this._info.html(g.length===1&&h.directions.length?"<strong>Камера показывает:</strong>"+c.CameraDirections.createView(h.directions)+'<p class="note">'+(h.description||"")+"</p>":'<strong>Выберите камеру:</strong><ul class="items">'+g.map(this._formatCamera,this).join("")+"</ul>").find("ul").bind("click",this._onListClick,this).end()}this._player.html(h?e('<div><div id="camera"></div></div>').css(j.size):'<p class="error">Камера временно выключена.</p>');this._map.getBalloon().setContent(this._element[0]);if(h&&h.active){if(this._region.local||!swfobject.hasFlashPlayerVersion("9.0.0")){e('<img id="camera"/>').attr(j.size).replaceAll("#camera")}else{swfobject.embedSWF("/resources/cameras/loader-probki-player.swf","camera",j.size.width,j.size.height,"9.0.0",null,null,{flashvars:e.param({player_id:"camera",stream_url:j.videoUrl}),allowScriptAccess:"always",bgcolor:"#FFFFFF",quality:"high",wmode:"opaque"},{align:"middle"})}g.selectAt(f)}},_onError:function(){this._map.getBalloon().setContent("Извините, сервис временно недоступен.")},_formatCamera:function(f){return'<li class="item"><b'+(f.active?' class="b-pseudo-link b-pseudo-link_wrap"':"")+"><span>"+(f.directions[0]&&f.directions[0].text||"")+"</span></b>"+(!f.active?'<p class="note">Камера временно выключена</p>':"")+"</li>"},_onListClick:function(f){e(f.target).closest(".b-pseudo-link").forEach(function(g){this._cameras.selectAt(e(g).parent().prevAll().length)},this)},_onCameraSelect:function(j,i,f){var h,g,k;this._timeouts=[];h=j.currentTarget;if(h.length===1&&i.directions.length){g=this._info.find(".camera-directions");this._directions=new c.CameraDirections(this._data,g)}else{this._info.find(".item").eq(f).addClass("selected").find("b").removeClass("b-pseudo-link b-pseudo-link_hover").end()}k=c.Cameras.getStream(i.streams);e("#camera").forEach(function(l){if(l.nodeName==="IMG"){l.src=k.imageUrl}else{if(l.sendToPlayer){l.sendToPlayer(k.videoUrl)}}});Lego.cp(30,2555,i.id)},_onCameraDeselect:function(h,g,f){this._info.find(".item").eq(f).removeClass("selected").find("b").addClass("b-pseudo-link").end();this._delete("_directions")}});c.CameraDirections=b.extend({constructor:function(g,f){this._data=g;this._doUpdate=true;this._element=e(f);this._timeout1=setTimeout(function(){this._doUpdate=false}.bind(this),60000);this._setTimeout()},destroy:function(){clearTimeout(this._timeout2);clearTimeout(this._timeout1)},_setTimeout:function(){this._timeout2=setTimeout(function(){(new c.Cameras(this._data)).bind("Load",this._onLoad,this).load()}.bind(this),10000)},_onLoad:function(i,f){var h,g;if(this._doUpdate&&(h=i.currentTarget[f])){g=e(this.constructor.createView(h.directions));this._element.replaceWith(g);this._element=g;this._setTimeout()}}},{createView:function(f){return'<ul class="camera-directions items">'+f.map(function(g){return'<li class="item'+(g.active?" selected":"")+'">'+g.text+"</li>"}).join("")+"</ul>"}});c.Panoramas=c.ALayer.extend({constructor:function(g,h,i){var f,j;this.id="stv";this.base(h.url,h,i);this._version=h.version;this._hotspot=h.hotspot;this._clicker=f=new c.PointClicker(i,{caption:"Панорамы улиц",show:false});j=new a.Observers();j.add(i,"BoundsChange",function(){f[this.covers(i)?"show":"hide"]();return arguments.callee}.call(this),this);f.bind("Select",this.show,this);f.bind("Deselect",this.hide,this);this.bind("Show",f.select,f);this.bind("Hide",f.deselect,f)},getUrlParams:function(){return this._state&&{ol:"stv",oll:this._map.getBalloon().getGeoPoint(),ost:this._encodeState(this._state)}},_show:function(){this._layer=new a.Layer(new a.TileDataSource(this._url+"tiles/?l=stv&%c",1,0));this._hint=new c.Hint(this._map,new a.ControlPosition(null,new a.Point(195,40)),"Щелкните в\xA0подсвеченную улицу,<br/> чтобы посмотреть панораму",{direction:c.Hint.UP});this._overlay=new a.Placemark(new a.GeoPoint(0,0),{interactive:false});this._map.addLayer(this._layer);this._clicker.bind("Click",this._onClickerClick,this);this._hint.show();Lego.c("stred/pid=30/cid=2674");if(this._hotspot){c.require("swfobject",function(){this._open(this._hotspot);delete this._hotspot},this)}},_hide:function(){this._close();this._unload();this._clicker.unbind("Click");this._map.removeLayer(this._layer);this._delete("_overlay","_hint","_layer")},_onClickerClick:function(g,f,h){this._close();c.require("swfobject",function(){this._load(f,h)},this)},_load:function(f,g){var h;this._unload();h=navigator.platform.indexOf("Linux")>=0;if(!swfobject.hasFlashPlayerVersion(h?"9.0.115":"7.0.0")){this._map.openBalloon(f,'Для просмотра панорам улиц необходим<br/> плеер Adobe Flash 9.0.115 или выше. <a href="http://get.adobe.com/flashplayer/" target="_blank">Скачать</a>');return}this._request=e.ajax({dataType:"json",url:"/actions/get-hotspot/",data:{ol:"stv",oll:f.toString(),ost:this._encodeState(g)},success:this._open.bind(this),error:this._hint.show.bind(this._hint)})},_unload:function(){if(this._request){this._request.abort();this._delete("_request")}},_open:function(k){var h,f,l,m,i,g,j;l=this._map;g=this._getPlayerSize(l);h="b-location-balloon";this._element=e('<div class="'+h+'"><table class="'+h+'__head"><tr><td><h3 class="name">\xA0</h3></td><td class="'+h+'__permalink"><a class="b-pseudo-link" href="/"><span>Ссылка на это место</span></a></td></tr></table><div style="width:'+g.x+"px;height:"+g.y+'px"></div></div>').find(".b-pseudo-link").bind("focus mouseenter",function(n){n.currentTarget.href=app.getUrl()}).click(function(n){Lego.block["b-hl-permalink"].toggle();Lego.c("stred/pid=30/cid=2808");n.currentTarget.blur();return false}).end();this._hint.hide();i=a.GeoPoint.fromJson(k.request.oll);f=a.GeoPoint.fromJson(k.ll);l.disableHotKeys();this._overlay.setGeoPoint(f);l.openBalloon(f,this._element[0],{onClose:this._close.bind(this),margin:[50,10,20,100],maxHeight:g.y+25});this._mapObservers=m=new a.Observers();m.add(l,"Update",this._onMapUpdate,this);m.add(l,"Redraw",this._onMapRedraw,this);this._mapSize=this._map.getContainerSize();this._onMapUpdate();a.jQuery(this._element).closest(".YMaps-b-balloon-frame").unbind("mousedown mouseup").bind("mousedown mouseup",function(n){(new a.MouseEvent(n)).preventMapEvent()});m.add(l,"BeforeMouseUp",function(o,n){n.getEvent().stopPropagation=d.NULL});this._state=this._decodeState(k.state)||this._calculateState(i,f);this._openPlayer(g,k.id,this._state)},_close:function(){if(this._element){this._closePlayer();this._element.remove();this._delete("_state","_mapSize","_mapObservers","_element");this._map.removeOverlay(this._overlay);this._map.enableHotKeys();this._map.closeBalloon()}},_openPlayer:function(g,j,h){var i,f;f=e.browser.opera&&e.browser.version<9.5;i=navigator.platform.indexOf("Linux")>=0;this._element.find("div").append('<div id="panorama"></div>');swfobject.embedSWF("/resources/streetview/sv-player"+(swfobject.hasFlashPlayerVersion("10.0.0")?10:9)+".swf?"+this._version,"panorama",g.x,g.y,"9.0.115","http://img.yandex.net/i/expressinstall.swf",{url:encodeURIComponent("/actions/get-panorama/?oid="+j),view:encodeURIComponent(h.dir+","+h.spn),callback:"app.map.panoramas.update"},{bgcolor:"ffffff",allowFullScreen:"true",allowScriptAccess:"always",wmode:i||f?"window":"opaque"},{"class":"b-location-balloon__panorama"},function(k){a.jQuery(k.ref).wheel(this._onMouseWheel.bind(this));e(document).bind("mouseup.stv",function(){if(k.ref.mouseup){k.ref.mouseup()}});e(window).bind("unload.stv",this._close,this)}.bind(this));Lego.c("stred/pid=30/cid=2675")},_closePlayer:function(){e([window,document]).unbind(".stv");a.jQuery("#panorama").unbind();if(swfobject){swfobject.removeSWF("panorama")}},update:function(i){var k,j,f,h,g;j=this._map;g=this._overlay;i=i.split(",");h=j.getBalloon().getGeoPoint();f=new a.GeoPoint(i[1],i[0]);this._element.find(".name").text(i.slice(6).join(",")||"\xA0");this._state={dir:(new a.Point(i[2],i[3])).toString(6),spn:(new a.Point(i[4],i[5])).toString(6)};k=Number(i[2]);while(k<0){k+=360}this._updateOverlay({dir:Math.round(k/360*8)%8});if(!h.equals(f)){g.setGeoPoint(f);j.getBalloon().setGeoPoint(f);j.moveBy(j.converter.coordinatesToMapPixels(h).diff(j.converter.coordinatesToMapPixels(f)))}if(!g.getMap()){j.addOverlay(g);e("#panorama").focus()}},_updateOverlay:function(h){var f,g;f=this._overlay;h=e.extend(f.metaDataProperty,h);if("type" in h&&"dir" in h){g="panorama#"+h.type+h.dir;if(g!==f.getStyle()){f.setStyle(g);f.setGeoPoint(f.getGeoPoint())}}},_onMapUpdate:function(){this._updateOverlay({type:this._map.getZoom()<14?"m":"l"})},_onMapRedraw:function(f){if(!this._mapSize.equals(f.getContainerSize())){this._onClickerClick(null,this._overlay.getGeoPoint(),this._state)}},_onMouseWheel:function(g){var f,h;f=g.currentTarget;h=e(f).offset();h.left=g.clientX-h.left;h.top=g.clientY-h.top;f.wheel(h.left,h.top,g.delta)},_getPlayerSize:function(m){var f,j,k,i,l,h,g;h=3/2;i=750;k=new a.Size(120,100);l=new a.Size(500,500/h);j=m.getContainerSize();g=Math.max(j.x-2*k.x,l.x);g=Math.min(g,i);f=Math.min(j.y-2*k.y,g/h);f=Math.max(f,l.y);g=f*h;return new a.Size(Math.round(g),Math.round(f))},_calculateState:function(k,h){var g,l,f,j,i;if(this._map.getZoom()<15||k.equals(h)){i=","}else{j=this._map.coordSystem;g=j.fromCoordPoint(k);f=j.fromCoordPoint(h);l=Math.atan2((g.x-f.x),(f.y-g.y))/Math.PI*180;i=l+","+0}return{dir:i,angle:","}},_encodeState:function(f){return f?"dir:"+f.dir+"~spn:"+f.spn:""},_decodeState:function(f){var g;if(f){g={};f.replace(/(\w+):([^~]+)/g,function(i,h,j){g[h]=j})}return g}},{init:function(){var h,f,l,k,g;g=["m","l"];k=[new a.Point(31,31),new a.Point(93,93)];l=[k[0].neg().scale(0.5),k[1].neg().scale(0.5)];for(h=0;h<g.length;h++){for(f=0;f<8;f++){a.Styles.add("panorama#"+g[h]+f,{iconStyle:{href:"/i/stv/stv"+g[h]+f+".png",offset:l[h],size:k[h]}})}}}});c.GridControl=c.ALayer.extend({constructor:function(f,g,h){this.id="grd";this.base(f,g,h);this.name="Градусная сетка";this._version=g.version},_show:function(){this._layer=new a.Layer(new a.TileDataSource(this._url+"tiles/?l=grd&%c&v="+this._version,1,0));this._map.addLayer(this._layer)},_hide:function(){this._map.removeLayer(this._layer);delete this._layer}});c.InfoLayers=c.List.extend({constructor:function(f,g){this.base();this.bind("Select",this._onSelect,this);this.bind("Deselect",this._onDeselect,this);this._tml=f.tml;this._oid=f.ol===f.tml&&f.oid},onAddToToolBar:function(f,g,h){this._parent=e(g).addClass("g-hidden");this._map=f.getMap();this._listBox=h.bind("Expand",this._load,this);if(this._tml){this._load()}},getUrlParams:function(){var g,f,j,h;j={};if(this.isSelected()){j.tml=this[this.selectedIndex].id;if((h=this._ymapsml)&&this._map.getBalloon()){h=h.get(0);for(g=h.length()-1;g>=0;g--){f=h.get(g);if(f.id&&f.getBalloon&&f.getBalloon()){j.ol=j.tml;j.oid=f.id;break}}}}return j},deselect:function(){this.clearSelection();this._hideLayer()},isSelected:function(){return this.selectedIndex!==null},_load:function(){var f,g;g=this._map.getZoom();f=this._map.getCenter().toString();if(f===this._center&&g===this._zoom){return}this._unload();this._request=e.ajax({dataType:"json",url:"/actions/get-map-layers/",data:{ll:f,z:g},success:this._setData.bind(this)})},_unload:function(){if(this._request){this._clear();this._request.abort();delete this._request}},_setData:function(g){var f,h,i,j;this._items=[];this._sepCount=0;this._zoom=g.zoom;this._center=g.center;this._regions=g.regions;h=this._listBox;j=h.indexOf(this)+1;g.layers.forEach(function(l,k){h.add((f=new a.ListBoxItem(l.name)),j+k);f=h.getItemElement(j+k).addClass("b-map__layer");f.attr("title",l.description).bind("click",this._onItemClick.bind(this));this._items.push(f.data("index",k));this.push(l);if(this._ymapsml&&this._ymapsml.id===l.id){this.selectAt(k)}if(l.id===this._tml){this.selectAt(k);this._showLayer(l);delete this._tml}if(!l.global&&k&&this[k-1].global){i=k}},this);if(i){h.add(new a.ListBoxSeparator(),j+i);this._sepCount++}if(j>1&&g.layers.length){h.add(new a.ListBoxSeparator(),j);this._sepCount++}},_clear:function(){this.clearSelection();this._listBox.splice(this._listBox.indexOf(this)+1,this.length+this._sepCount);while(this.length){this.pop()}this._delete("_region","_center","_zoom","_sepCount","_items")},_onItemClick:function(f){this.selectAt(a.jQuery(f.currentTarget).data("index"));this[this.isSelected()?"_showLayer":"_hideLayer"](this.getSelectedItem());return false},_onSelect:function(i,g,f){var h=this._items[f];h.addClass("b-map__layer_selected");if(this._regions[this.getSelectedItem().region]){h.append('<div><span class="b-pseudo-link"><span>весь слой</span></span></div>');h.find(".b-pseudo-link").bind("click",this._onViewClick.bind(this))}},_onDeselect:function(i,g,f){var h=this._items[f];h.find("div").remove().end().removeClass("b-map__layer_selected b-map__layer_loading")},_showLayer:function(f){var h,g;this._hideLayer();this._items[this.selectedIndex].addClass("b-map__layer_loading");this._ymapsml=g=new a.YMapsML(f.url,{viewAutoApply:false});g.minZoom=this._regions[f.region]?this._regions[f.region].z:0;g.id=f.id;this._observers=h=new a.Observers();h.add(g,"Load",this._onLoad,this);h.add(g,"Fault",this._onError,this);h.add(this._map,"BoundsChange",this._onBoundsChange,this);this._onBoundsChange(this._map);Lego.cp(30,2951,f.id)},_hideLayer:function(){this._map.removeOverlay(this._ymapsml);this._delete("_observers","_ymapsml")},_onLoad:function(h){var g,f;if(this.isSelected()&&h.id===this.getSelectedItem().id){this._items[this.selectedIndex].removeClass("b-map__layer_loading")}if(this._oid){h=h.get(0);for(g=h.length()-1;g>=0;g--){f=h.get(g);if(f.id===this._oid){f.openBalloon(null,{mapAutoPan:!this._map.isCentered});delete this._map.isCentered;break}}delete this._oid}},_onError:function(g){var f;if(this.isSelected()&&g.id===this.getSelectedItem().id){f=this._items[this.selectedIndex].removeClass("b-map__layer_loading");f.find(".b-pseudo-link").replaceWith("<span>Слой недоступен</span>")}},_onBoundsChange:function(f){var g=this._ymapsml;if(!g.getMap()===f.getZoom()>=g.minZoom){f[g.getMap()?"removeOverlay":"addOverlay"](g)}},_onViewClick:function(){var f=this._regions[this.getSelectedItem().region];this._map.setCenter(a.GeoPoint.fromJson(f.ll),f.z);return false}});c.InfoLayers.implement(c.Selectable);c.Allmaps=b.extend({constructor:function(f){this._app=f;this._map=f.map;this._link=e("#allmapsTab")},enable:function(){this._link.removeAttr("href").parent().addClass("current")},disable:function(){this._link.attr("href","/?index").parent().removeClass("current")},setData:function(f){this._data=f;this._selectedIndex=+!!e.inArray(this._map.getType(),this._map.types);this._element=e('<div class="b-allmaps"><h2 class="title">Выбрать город</h2><ul class="tabs g-line">'+f.types.map(this._formatTab,this).join("")+"</ul>"+f.types.map(this._formatBlock,this).join("")+"</div>");this._element.find("ul.tabs li").bind("click",this._onTabClick,this).eq(this._selectedIndex).click().end().end().find("dl.list").bind("click",this._onListClick,this).end();this._app.panel.append(this._element);Lego.c("stred/pid=30/cid=2201")},clear:function(){this._element.remove();this._delete("_data","_element","_selectedIndex")},getUrlParams:function(){return{index:null}},_formatTab:function(f){return'<li><span class="b-pseudo-link"><span>'+d.escapeHtml(f.name)+"</span></span></li>"},_formatBlock:function(f){return'<div class="g-hidden"><p class="note">'+d.escapeHtml(f.description)+":</p>"+f.countries.map(this._formatCountry,this).join("")+"</div>"},_formatCountry:function(h){var g,f;g=h.cities.length;f=4+(g===5);return'<dl class="list"><dt>'+d.escapeHtml(h.name)+"</dt>"+h.cities.slice(0,f).map(this._formatCity,this).join("")+(g>5?'<dd><strong class="b-pseudo-link"><span>Показать все ('+g+")</span></strong></dd>":"")+"</dl>"},_formatCity:function(g){var f;if((f=a.GeoBounds.fromJson(g.bb))){g.geoPoint=f.getCenter();g.zoom=f.getMapZoom(this._map)}else{g.geoPoint=a.GeoPoint.fromJson(g.ll)}return'<dd><a class="b-pseudo-link" href="/?'+d.query({ll:g.geoPoint.toString(),z:g.zoom})+'"><span>'+d.escapeHtml(g.name)+"</span></a></dd>"},_onTabClick:function(i){var j,f,h,g;g=this._element.find("ul.tabs li");j=this._element.children("div");f=this._selectedIndex;h=g.eq(f).removeClass("current");h.children().addClass("b-pseudo-link");j.eq(f).addClass("g-hidden");h=e(i.currentTarget).addClass("current");h.children().removeClass("b-pseudo-link b-pseudo-link_hover");this._selectedIndex=f=h.prevAll().length;j.eq(f).removeClass("g-hidden");return false},_onListClick:function(f){e(f.target).closest(".b-pseudo-link").forEach(function(o){var n,l,h,g,m;o.blur();o=e(o);l=o.parents("div:first").prevAll("div").length;h=o.parents("dl:first").prevAll("dl").length;g=o.parent().prevAll("dd").length;n=this._data.types[l].countries[h].cities;if(o.is("strong")){o.parent().replaceWith(n.slice(4).map(this._formatCity,this).join(""))}else{m=this._map.types[this._selectedIndex];this._map.setCenter(n[g].geoPoint,n[g].zoom,m)}f.stopPropagation();f.preventDefault()},this)}});c.Feedback=b.extend({constructor:function(f){this.app=f;this.name="feedback";this.placemarks={rd:this.createPlacemark("red",0),gn:this.createPlacemark("green",50)};e("#feedback-link").bind("focus mouseover",function(g){g.currentTarget.href=f.getUrl("feedback/")})},enable:function(){this._toggleLink(true)},disable:function(){this._toggleLink(false)},_toggleLink:function(f){e("#foot-links li").filter(":last").toggleClass("g-hidden",f).end().eq(0).find("i").toggleClass("g-hidden",f).end().end()},setData:function(f){this.app.panel[0].innerHTML=f.panel;e("#fbReset").bind("click",function(){this.app.loadUrl("/")},this);e(".toggle .b-pseudo-link").click(function(){e("#"+this.htmlFor).toggleClass("g-hidden")});e("#feedback-route").bind("focus mouseover",function(g){g.currentTarget.href=app.getUrl("feedback/",{mode:"route"})});e("#fbBrowser").val(navigator.userAgent);e("#fbForm").bind("submit",this.onFormSubmit,this).find(".required").bind("change keyup",function(h){var g;g=h.currentTarget;e(g).parents(".fieldset").toggleClass("wrong",!g.value);this.checkForm()},this).end().find(".g-example").bind("focus",function(g){var h=g.currentTarget;if(!h.title){h.title=h.value;h.value=""}e(h).removeClass("g-example")}).bind("blur",function(g){var h=g.currentTarget;if(!h.value){h.value=h.title;h.title="";e(h).addClass("g-example")}}).end();e("#fbEmail").bind("blur change keyup",function(h){var g,i;g=h.currentTarget;i=!g.value||this.isEmail(g.value);e(g).parents(".fieldset").toggleClass("wrong",!i);this.checkForm()},this);e("#fbForm").find(".b-feedback__hint a").bind("click",function(h){var g=e(this).find("span").text();e("#fbEmail").removeClass("g-example").val(g);return false});this.onModeChange();e("#fbMode").bind("change",this.onModeChange,this);if(f.route){this._route=new c.Route(this.app.map.traffic);this._routeMap=new c.RouteMap(this._route,this.app.map);this._route.setData(f.route)}},clear:function(){if(this._route){this._route.clear();this._delete("_routeMap","route")}this.removeAllPlacemarks();this.app.panel.empty()},getUrlParams:function(){return this._route&&this._route.getUrlParams()||{}},checkForm:function(){var f=e("#fbMode").val();e("#fbSend").attr("disabled",e("#fbForm>."+f).is(".wrong"))},isEmail:function(f){return(/^[\w\-]+(\.[\w\-]+)*@([\w\-]+\.)+[a-z]{2,7}$/i).test(f)},createPlacemark:function(f,h){var g;g=new a.Placemark(new a.GeoPoint(0,0),{draggable:1,hasBalloon:0});g.metaDataProperty={offset:new a.Point(h)};g.setStyle("default#"+f+"Point");return g},addPlacemark:function(j,i){var g,f,h;g=this.placemarks[j];f=g.getGeoPoint();g.setIconContent(i);if(!(f&&app.map.getBounds().contains(f))){h=g.metaDataProperty.offset;g.setGeoPoint(app.map.getCenterByOffset(h))}app.map.addOverlay(g)},removeAllPlacemarks:function(){var f;for(f in this.placemarks){app.map.removeOverlay(this.placemarks[f])}},onModeChange:function(){var g=e("#fbMode").val(),f=this;this.removeAllPlacemarks();e("#fbForm").children().each(function(){var h=e(this).hasClass(g);e("input,textarea",this).attr("disabled",!h).filter(".placemark").each(function(){if(h){f.addPlacemark(this.alt,this.title)}}).end()}).end().attr("className",g);this.checkForm()},onFormSubmit:function(){e("#fbMode").attr("disabled",true).each(function(){e("#fbSubject").val(this.options[this.selectedIndex].innerHTML)});e("#fbForm input:not(:disabled).placemark").forEach(function(g){var f=this.placemarks[g.alt].getGeoPoint();g.value=this.app.getUrl("",{pt:f+",pm"+g.alt});g.nextSibling.value=f.toString()},this);e("#fbForm input[name$=permalink]").val(app.getUrl());e("#fbPermalinkLl").val(app.map.getCenter().toString());Array.forEach(e("#fbForm")[0].elements,function(f){var g=!f.value||e(f).is(".g-example");f.disabled=f.disabled||g},this)}});c.Bizfinder=b.extend({constructor:function(f){this._app=f;this._tab=e("#bizfinderTab");this._form=e("#b-search_bizfinder").find("#what").attr("name","text").end().bind("submit",this._onFormSubmit,this)},enable:function(){var f;f=document.activeElement;if(e.browser.msie&&f&&f.nodeName==="INPUT"){f.blur()}this._tab.removeAttr("href").parent().addClass("current");this._form.closest(".b-head-search").addClass("b-head-search_bizfinder");e("#foot-links i:first, #feedback-link").addClass("g-hidden")},disable:function(){e("#foot-links i:first, #feedback-link").removeClass("g-hidden");this._form.closest(".b-head-search").removeClass("b-head-search_bizfinder");this._tab.attr("href","/?where").parent().removeClass("current")},setData:function(h){var i,j,f,g;i=this._app;this._controls=f=[];this._element=g=e('<div class="b-bizfinder"><h2 class="b-sidebar__title">Поиск организаций</h2></div>');if(h.businesses){this._businesses=j=new c.Businesses(h.businesses);f.push(new c.BusinessList(j,g));f.push(new c.BusinessMap(j,i.map,i));e("#what").val(j.request.text);e("#where").val(j.request.where);this._tab.attr("href","/?where");if(typeof h.selectedIndex==="number"){j.selectAt(h.selectedIndex)}}else{g.append('<p>Напишите в\xA0поле «Что» название объекта или организации. Без уточнения места поиска в\xA0поле «Где» поиск будет осуществляться на\xA0выбранном участке карты.</p><p class="b-add_business"><a href="http://adresa.yandex.ru/add.xml">Добавить организацию</a></p>');e("#what").val("");e("#where").val("");this._tab.removeAttr("href");Lego.cp(30,2639,"index")}i.panel.append(g)},clear:function(){this._element.remove();while(this._controls.length){this._controls.pop().destroy()}this._tab.attr("href","/?where");this._delete("_businesses","_element","_controls")},updateTab:function(g,h,f){this._tab[0].href="/?"+d.query({text:g,where:null,sll:g&&h,sspn:g&&f})},_onFormSubmit:function(f){this._app.loadUrl("/?"+d.query({text:this._form.find("[name=text]").val(),where:this._form.find("[name=where]").val()||null,sll:this._app.map.getCenter().toString(),sspn:this._app.map.getBounds().getSpan().toString(6),source:"hands"}));return false},getUrlParams:function(){return this._businesses?this._businesses.getUrlParams():{where:null}}});c.Businesses=c.List.extend({constructor:function(f){this.base();this.request=f.request;this.results=10;this.locations=f.locations&&new c.Locations(f.locations);this.distant=f.distant;this.locationsCount=f.locationsCount;this.sll=f.sll;this.seed=f.seed;this._setData(f)},_setData:function(f){this.clearSelection();while(this.length){this.pop()}this.source=f.source;this.status=f.status;this.total=f.length;this.skip=f.request&&f.request.skip||0;this.geoBounds=a.GeoBounds.fromJson(f.bb);this.categories=f.categories||[];(f.items||[]).forEach(function(g){this.push(new c.Business(g))},this);this.trigger("Update")},reload:function(){e.ajax({url:"/actions/get-businesses/",dataType:"json",data:{text:this.request.text,category:this.request.category,ssll:this.sll||"",ll:this.request.ll,spn:this.request.spn,seed:this.seed||false,source:"mouse"},success:this._setData.bind(this)})},getUrl:function(f){var g;g=this.getUrlParams(f);g.seed=this.seed;g.skip=false;return"/?"+d.query(g)},getUrlParams:function(g){var f;f=this.selectedIndex!==null?this[this.selectedIndex].getUrlParams():{};return e.extend({text:this.request.text,category:this.request.category,where:this.request.where||null,sll:this.request.sll,sspn:this.request.sspn,ll:this.request.ll,spn:this.request.spn,skip:this.skip},g,f)}});c.Businesses.implement(c.Selectable);c.Business=b.extend({constructor:function(f){this.base();this.id=f.id;this.kind=f.kind;this.precision=f.precision;this.geoPoint=a.GeoPoint.fromJson(f.ll);this.geoBounds=a.GeoBounds.fromJson(f.bb);this.name=f.name;this.postalCode=f.postalCode;this.address=f.address;this.hours=f.hours;this.phones=f.phones||[];this.url=f.url;this.distance=f.distance;this.paid=f.paid;this.slogan=f.slogan;this.categories=f.categories||[];this.provider=f.provider},getUrl:function(){var f;f=this.getUrlParams();return"/?"+d.query(e.extend(f,{where:null}))},getUrlParams:function(){return{ol:"biz",oid:this.id}}});c.BusinessList=b.extend({constructor:function(g,f){this.base();this._businesses=g;this._parent=f;this._locale=c.BusinessList.locale;g.bind("Update",this._update,this);g.bind("Select Deselect",this._onSelectDeselect,this);this._update();if(g.locationsCount){Lego.cp(30,2640,"locations")}},destroy:function(){this._clear();this._businesses.unbind("Select Deselect",this._onSelectDeselect);this._businesses.unbind("Update",this._update);this.base()},_update:function(){var h,f,g;this._clear();this._element=h=e("<div/>");g=this._businesses.status;f=this._locale;if(g.code===200){this._appendBusinesses()}else{if(g.code===400&&g.message==="spn parameter is too large"){h.append(f.needZoomOrText)}else{if(g.code===400&&g.message==="missing text parameter"){h.append(f.needText)}else{h.append(f.unavailable)}}}this._parent.append(h)},_appendBusinesses:function(){var i,h,f,g;i=this._businesses;h=this._element;h.append(this._countBusinesses(i));if(i.locationsCount){h.append(this._formatLocationsCount(i))}if(i.source!=="mouse"){h.append(this._formatSuggest(i))}h.append(this._formatBusinesses(i));f=new c.Pager({itemsCount:i.total,itemsOffset:i.skip,itemsOnPage:i.results});g=new c.PagerView(f,i.getUrl(),h);h.find(".b-bizfinder__list").bind("click",this._onListClick,this);Lego.cp(30,2639,[i.source||"links",i.total?"found":"empty"].join("."))},_clear:function(){if(this._element){this._element.remove();delete this._element}},_countBusinesses:function(k){var h,j,i,g,f;f=k.locations;g=this._locale;if(k.distant){h="<p>"+g.nearNothingFound+'<br/><a href="'+k.getUrl({where:null,sll:k.geoBounds.getCenter().toString(),sspn:k.geoBounds.getSpan().toString(6)})+'">'+g.outOfMap+"</a></p>"}else{if((i=k.total)){j="Найден"+d.decline(i,"а","о","о")+" "+i+"\xA0организаци"+d.decline(i,"я","и","й");h='<p class="b-bizfinder__found">'+j+"</p>"}else{if(i===0||f&&!f.length){h="<p>"+g.nothingFound+"</p>"}else{if(!f[0].small&&!k.request.text){h="<p>"+g.needText+"</p>"}}}}return h},_formatLocationsCount:function(h){var g,f;g=h.locationsCount;f=h.request;return g?'<div class="b-finder"><img alt="" src="/i/finder-compass.png" class="b-finder__img"/><h3 class="b-finder__title">Искали место на карте?</h3><a class="b-finder__link" href="/?'+d.query({text:f.text,sll:f.sll,sspn:f.sspn})+'" onmousedown="Lego.cp(30, 2641, \'locations\')">Найден'+d.decline(g,"","о","о")+" "+g+"\xA0объект"+d.decline(g,"","а","ов")+"</a></div>":""},_formatSuggest:function(h){var g,f;f=h.locations;if(f&&f.suggest){g='<div class="b-search-mistake"><p>Возможно, вы искали:</p><p class="correct">«<a href="'+h.getUrl({where:f.suggest.text})+'"><span>'+(h.request.text?h.request.text+": ":"")+f.suggest.items.map(function(i){return i.fix?"<b>"+i.fix+"</b>":i}).join("")+"</span></a>»</p></div>"}return g},_formatBusinesses:function(f){return f.total?'<ol class="b-bizfinder__list b-bizfinder__list-number">'+f.map(this._formatBusiness,this).join("")+"</ol>":""},_formatBusiness:function(g,f,h){return'<li class="b-bizfinder__item"><i class="b-bizfinder__number">'+(h.skip+f+1)+'.</i><p class="b-bizfinder__result'+(g.paid?" b-bizfinder__paid":"")+'"><a class="b-bizfinder__name b-pseudo-link b-pseudo-link_wrap" href="'+g.getUrl()+'"><span>'+d.escapeHtml(g.name)+"</span></a>"+(g.distance?'<span class="b-bizfinder__distance">'+a.humanDistance(g.distance)+"</span>":"")+"</p>"+(g.slogan?"<p><strong>"+d.escapeHtml(g.slogan)+"</strong></p>":"")+'<p class="b-bizfinder__addr">'+d.escapeHtml(g.address)+"</p>"+g.phones.slice(0,2).map(function(i){return'<nobr><strong class="b-bizfinder__phone">'+i.number+"</strong>"+(i.ext?"доб.\xA0"+i.ext:"")+"</nobr> "}).join("")+(g.url?'<a class="b-bizfinder__site" href="'+g.url+'">'+d.escapeHtml(g.url.replace(/^http:\/{2}/,""))+"</a>":"")+(g.categories.length?'<p class="b-bizfinder__more">'+g.categories.map(function(j,i){return(i?", ":"")+'<a class="b-bizfinder__more-link" href="'+h.getUrl({text:j})+'">'+j+"</a>"}).join("")+"</p>":"")+"</li>"},_onListClick:function(f){e(f.target).closest(".b-bizfinder__name").forEach(function(h){var g;g=e(h).closest("li").prevAll().length;this._businesses.selectAt(g);f.stopPropagation();f.preventDefault();h.blur()},this)},_onSelectDeselect:function(h,g,f){var i=g.paid?"current-paid":"current";this._element.find(".b-bizfinder__item").eq(f).toggleClass("b-bizfinder__"+i,h.type==="Select")}},{locale:{needZoomOrText:"Если вы искали организацию, уточните запрос в\xA0поле «Что» или увеличьте масштаб карты.",needText:"Если вы искали организацию, уточните запрос в\xA0поле «Что».",nothingFound:"Искомая комбинация на\xA0карте не\xA0встречается.",nearNothingFound:"Поблизости организаций не\xA0найдено.",outOfMap:"Результаты за\xA0пределами участка карты.",unavailable:"Извините, сервис временно недоступен."}});c.BusinessMap=b.extend({constructor:function(i,g,h){var f;this.base();this._businesses=i;this._map=g;this._app=h;i.bind("Update",this._update,this);i.bind("Select",this._onSelect,this);i.bind("Deselect",this._onDeselect,this);if(i.request.text||i.request.where){this._mapObservers=new a.Observers();this._mapObservers.add(g,"BoundsChange",this._onBoundsChange,this)}f=i.locations;if(f&&f.length){this._locationView=new c.LocationView(f,h,{balloonAutoOpen:false})}g.isMoved=0;this._update()},destroy:function(){this._clear();this._map.isMoved=1;this._delete("_coordsPointView","_locationView","_mapObservers");this._businesses.unbind("Deselect",this._onDeselect);this._businesses.unbind("Select",this._onSelect);this.base()},_update:function(){var j,g,h,f;this._clear();this._overlays=h=[];this._observers=new a.Observers();j=this._businesses;j.forEach(this._addOverlay,this);for(g=h.length-1;g>=0;g--){this._map.addOverlay(h[g])}if(this._locationView){j.locations.selectAt(0)}if(j.sll&&!j.locations){this._coordsPointView=f=new a.Placemark(a.GeoPoint.fromJson(j.sll.split(",")),{style:"geocoder#location"});f.name=j.sll;this._map.addOverlay(f)}},_clear:function(){if(this._overlays){if(this._locationView){this._businesses.locations.clearSelection()}if(this._coordsPointView){this._map.removeOverlay(this._coordsPointView)}this._overlays.forEach(this._map.removeOverlay,this._map);this._delete("_coordsPointView","_overlays","_observers")}},_addOverlay:function(f,m,p){var o,j,g,k,h,n;o=f.geoPoint;for(j=m-1,g=p.length-1;j>=0;j--){if(p[j].geoPoint.equals(o)){n=this._map.converter.coordinatesToMapPixels(o);n.moveByX(Math.sin(Math.PI*2/9*(g-j))*20);n.moveByY(Math.cos(Math.PI*2/9*(g-j))*20);o=this._map.converter.mapPixelsToCoordinates(n);break}}h=new a.Placemark(o,{style:"business#"+(f.paid?"pink":"mark"),balloonOptions:{maxWidth:400}});h.setIconContent(m+p.skip+1);h.setBalloonContent(this._getBalloonContent(f));k=this._observers;k.add(h,"Click",function(i){i.metaDataProperty.balloonOpen=true;p.selectAt(m)});k.add(h,"BalloonOpen",function(l){var q,i;q=e(l.getBalloonContent()).find(".mymaps-saver");this._saver=i=new c.MymapsSaver(q,this._app);i.bind("Update",l.getBalloon().update,l.getBalloon());i.setData({name:f.name,description:f.address+f.phones.map(function(r){return"\n"+r.number+" "+(r.info||"")}).join("")+(f.url?"\n"+f.url:""),geoPoint:f.geoPoint})},this);k.add(h,"BalloonClose",function(i){this._delete("_saver")},this);this._overlays.push(h)},_onBoundsChange:function(f){var g;g=this._businesses;if(g.selectedIndex===null){e.extend(g.request,{ll:f.getCenter().toString(),spn:f.getBounds().getSpan().toString(6)});g.reload()}},_onSelect:function(i,h,g){var f;f=this._overlays[g];if(!f.metaDataProperty.balloonOpen){f.openBalloon()}this._balloonObservers=new a.Observers();this._balloonObservers.add(f,"BalloonClose",function(){this._businesses.clearSelection()},this);Lego.c("stred/pid=30/cid=2676")},_onDeselect:function(i,h,g){var f;this._delete("_balloonObservers");if((f=this._overlays[g])){f.closeBalloon();delete f.metaDataProperty.balloonOpen}},_getBalloonContent:function(h){var f,j,g,i;f=h.address;i=h.postalCode||"";j=this._businesses;g=e('<div><div class="b-сс-balloon"><h3 class="b-cc-balloon__name">'+d.escapeHtml(h.name)+'</h3><ul class="b-cc-balloon__contact"><li class="b-cc-balloon__contact-item">'+(i.length===6?i+", ":"")+(h.precision==="exact"?'<a title="Информация об адресе" href="/?'+d.query({text:f,sll:j.request.sll,sspn:j.request.sspn})+'">'+f+"</a>":"<span>"+f+"</span>")+"</li>"+h.phones.map(function(k){return'<li class="b-cc-balloon__contact-item"><strong class="b-cc-balloon__phone">'+k.number+"</strong>"+(k.ext?'<span class="b-cc-balloon__ext-phone-note">доб.\xA0'+k.ext+"</span>":"")+(k.info?'<span class="b-cc-balloon__phone-note">'+k.info+"</span>":"")+"</li>"}).join("")+(h.hours?'<li class="b-cc-balloon__contact-item"><b class="b-cc-balloon__working-note">Часы работы: </b><span class="b-cc-balloon__working">'+h.hours+"</span></li>":"")+(h.url?'<li class="b-cc-balloon__contact-item"><a href="'+h.url+'" class="b-cc-balloon__contact-site">'+h.url+"</a></li>":"")+'</ul><dl class="b-cc-balloon__ff"><dt class="b-cc-balloon__ff-title">Рубрики:</dt>'+h.categories.map(function(k){return'<dd class="b-cc-balloon__ff-item"><a href="'+this._businesses.getUrl({text:k,category:""})+'" class="b-cc-balloon__ff-link">'+k+"</a></dd>"},this).join("")+"</dl>"+(h.provider?'<div class="b-cc-balloon__source"><b class="b-cc-balloon__source-title">Поставщик данных:</b><a href="'+h.provider.url+'" class="b-cc-balloon__source-link">'+d.escapeHtml(h.provider.name)+"</a></div>":"")+'<table class="b-cc-balloon__foot"><tbody><tr><td class="b-cc-balloon__foot-item">'+c.MymapsSaver.createView()+'</td><td class="b-cc-balloon__foot-item"><a href="http://adresa.yandex.ru/edit.xml?company='+h.id+'">Сообщить об ошибке</a></td></tr></tbody></table></div></div>').bind("click",this._app.onLinkClick,this._app);return g[0]}},{init:function(){a.Styles.add("business#mark",{iconStyle:{template:"compact#icon",href:"/css/b-cc-balloon/b-cc-balloon.mark.png",size:new a.Point(29,34),offset:new a.Point(-11,-32)},iconContentStyle:{color:"#333",width:28}});a.Styles.add("business#pink",{iconStyle:{template:"compact#icon",href:"/css/b-cc-balloon/b-cc-balloon.pink.png",size:new a.Point(29,34),offset:new a.Point(-11,-32)},iconContentStyle:{color:"white",width:28}})}});c.Geocoder=b.extend({isGeocoder:true,constructor:function(f){this._app=f;this._links=e("#geocoderTab").add(e("#page-t").find(".b-head-name__link,strong .b-head-tabs__link"));this._form=e("#b-search_geocoder");this._form.bind("submit",this._onFormSubmit,this);if(e.browser.msie){this._form.find("input[name=text]").bind("keypress paste",this._onFormInput,this)}},enable:function(){this._links.parent().addClass("current")},disable:function(){this._links.parent().removeClass("current")},setData:function(j,l){var k,g,i,h,f;this._element=i=e("<div/>");this._controls=g=[];if(j.index){if(l){this._element=i=e(".b-geocoder")}else{i.html(j.index)}this._links.removeAttr("href")}else{this._links.attr("href","/")}k=this._app;if(j.locations){this._locations=f=new c.Locations(j.locations);if(f.url){g.push(new c.GeoXmlView(f.url,k.map,i))}else{if(f[0]&&f[0].houses){this._houses=h=new c.Houses(f[0]);g.push(new c.HouseList(h,i));g.push(new c.LocationView(h,k));if(j.select){h.selectAt(-1)}}else{this._calculateDistance(f);g.push(new c.LocationList(f,i));g.push(new c.LocationView(f,k));if(j.select&&!f.distant){f.selectAt(f.skip)}}}}if(f&&!f.error){this._form[0].text.value=f.request||f.url}k.panel.append(i);k.toggleBanner(!f)},clear:function(){this._app.toggleBanner(false);while(this._controls.length){this._controls.pop().destroy()}this._element.remove();this._links.attr("href","/");this._delete("_houses","_locations","_controls","_element")},getUrlParams:function(){var f=this._houses||this._locations;return f?f.getUrlParams():{}},updateTab:function(g,h,f){this._links[0].href="/"+(g&&"?"+d.query({text:g,sll:h,sspn:f}))},_calculateDistance:function(f){var i,h,k,j,g;g=9;j=200000;i=["house","street"];k=this._app.map;if((h=f[f.skip])){f.distant=f.reverse?f.source==="mouse"&&!k.getBounds().contains(h.geoPoint):k.getZoom()>g&&h.geoPoint.distance(k.getCenter())>j&&e.inArray(h.kind,i)!==-1}},_onFormInput:function(f){if(!f.which||f.which!==13){this._inputType=f.type}},_onFormSubmit:function(g,k){var j,i,h,f;j=this._app;f=g.currentTarget;i={text:f.text.value};h=e.Event("FormSubmit");this.trigger(h,[i]);if(!h.isDefaultPrevented()){k=k||{};k.text=i.text;k.sll=j.map.getCenter().toString();k.sspn=j.map.getBounds().getSpan().toString(6);k.source="hands";j.loadUrl("/?"+e.param(k));if(this._inputType){Lego.cp(30,2523,this._inputType);delete this._inputType}}return false}});c.Location=b.extend({constructor:function(h){var g,i,f;this.text=h.text;this.kind=h.kind;this.housesCount=h.housesCount;this.buildingsCount=h.buildingsCount;this.precision=h.precision;this.geoid=h.geoid;this.geoPoint=a.GeoPoint.fromJson(h.ll);this.geoBounds=h.geoBounds||a.GeoBounds.fromJson(h.bb);this.zoom=h.zoom;this.houses=h.houses;this._setInfo(h.info);this.small=h.small;f=", ";i=(h.text||"").split(f);g=h.kind==="house"?-2:-1;this.name=i.slice(g).join(f);this.description=i.slice(0,g).join(f)},getUrl:function(){return"/?"+d.query(this.getUrlParams())},getUrlParams:function(){return{text:this.text,sll:this.geoPoint.toString(),sspn:this.geoBounds.getSpan().toString(6)}},loadInfo:function(){if(this.info){this.trigger("InfoLoad",[this.info])}else{if(this.kind==="house"){e.ajax({url:"/actions/get-location-info/",data:{ll:this.geoPoint.toString(),geoid:this.geoid},dataType:"json",success:function(f){this._setInfo(f);this.loadInfo()}.bind(this)})}}},_setInfo:function(f){this.info=f;if(f&&f.businesses){f.businesses=new c.Businesses(f.businesses)}}});c.LocationView=b.extend({_defaults:{balloonAutoOpen:true},constructor:function(g,j,i){var h,f;this._options=i=e.extend({},this._defaults,i);this._placemark=new a.Placemark(new a.GeoPoint(0,0),{style:"geocoder#location",balloonOptions:{maxWidth:350}});this._locations=g;this._app=j;if(g.reverse){f=g.geoBounds.getCenter(true);this._anchor=h=new a.Placemark(f,{style:"geocoder#anchor"});h.name=g.request;j.map.addOverlay(h)}this._element=e('<div class="b-location-balloon"><h3 class="name"></h3><p></p><table><tr><td><div class="info"></div></td><td class="thumb"></td></tr></table><ul class="addition"><li class="route">Построить маршрут: <a class="from">отсюда</a>, <a class="to">сюда</a></li><li>'+c.MymapsSaver.createView()+" </li></ul></div>").bind("click",j.onLinkClick,j);this._info=this._element.find("div.info");this._thumb=this._element.find("td.thumb");this._saver=new c.MymapsSaver(this._element.find(".mymaps-saver"),j).bind("Update",this._onSaverUpdate,this).bind("Save",this._onSaverSave,this);g.bind("Select",this._onSelect,this);g.bind("Deselect",this._onDeselect,this)},destroy:function(){this._onDeselect();this._locations.unbind("Deselect",this._onDeselect);this._locations.unbind("Select",this._onSelect);this._delete("_popup","_saver");this._element.remove();if(this._anchor){this._app.map.removeOverlay(this._anchor)}this.base()},_onSelect:function(i,f){var j,k,g,h;j=this._app.map;if(this._options.balloonAutoOpen&&!j.isCentered&&this._locations.source!=="mouse"){h=f.zoom||f.geoBounds.getMapZoom(j);j.setCenter(f.geoPoint,h);j.isMoved=0}this._location=f;g=this._placemark;g.setGeoPoint(f.geoPoint);f.bind("InfoLoad",this._onLocationInfoLoad,this);this._saver.setData(f);this._element.find("h3").text(f.name).end().find("p").text(f.description).end().find("li.route").toggleClass("g-hidden",f.geoid!==1).end().find("a").filter(".from").attr("href","/?"+e.param({rt:f.text+"~"})).end().filter(".to").attr("href","/?"+e.param({rt:"~"+f.text})).end().end();j.addOverlay(g);if(this._options.balloonAutoOpen){f.loadInfo();g.openBalloon(this._element[0],{mapAutoPan:!j.isCentered});j.isCentered=0}else{g.setBalloonContent(this._element[0]);this._observers=k=new a.Observers();k.add(g,"BalloonOpen",this._onBalloonOpen,this)}},_onDeselect:function(){this._delete("_observers");this._app.map.removeOverlay(this._placemark);this._app.map.isMoved=1;this._info.empty();this._thumb.empty();if(this._popup){this._popup.close()}if(this._location){this._location.unbind("InfoLoad",this._onLocationInfoLoad);delete this._location}},_onBalloonOpen:function(){this._location.loadInfo();this._delete("_observers")},_onLocationInfoLoad:function(f,g){var h;h=0;if(g.photo&&++h){this._thumb.append(this._formatThumb(g.photo))}if(g.businesses&&++h){this._info.append(this._formatBusinesses(g.businesses))}if(g.metro&&++h){this._info.append(this._formatMetro(g.metro))}if(h){this._placemark.update()}},_formatThumb:function(g){var h,f;f=e('<dl class="list-image"><dd class="image"></dd></dl>');h=e("<img/>").attr("src",g.prefix+"_S");h.bind("click",this._onThumbClick,this);return f.find("dd").append(h).end()},_onThumbClick:function(){e('<img class="photo"/>').bind("load",this._onPhotoLoad,this).attr("src",this._location.info.photo.prefix+"_L?")},_onPhotoLoad:function(i){var j,g,h,f;if(!(f=this._popup)){f=this._popup=new c.Popup("photo")}g=this._location;j=g.info.photo;h=e(i.currentTarget);h.unbind("load",this._onPhotoLoad);h.bind("click",f.close,f);f.open("<h3>"+d.escapeHtml(g.name)+"</h3>",h.add('<table class="footer"><tr><td class="footer-l"><a href="'+j.prefix+'_orig" target="_blank">Оригинал</a></td><td class="footer-r">снято '+j.taken+" \xA9\xA0"+j.copyright+"</td></tr></table>"))},_formatBusinesses:function(j){var f,g,i,h;h=j.total;g=h<=3?"Поискать рядом":"Показать ещё";h+="\xA0организаци"+d.decline(h,"я","и","й");f=this._location;i="/?"+d.query({where:f.text,sll:f.geoPoint.toString(),sspn:f.geoBounds.getSpan().toString(6)});Lego.c("stred/pid=30/cid=2677");return e('<dl class="companies"><dt>В этом доме</dt><dd class="note">'+h+"</dd>"+j.map(function(m){var l,k;k=m.getUrl();l=d.escapeHtml(m.name);return'<dd class="business"><a href="'+k+'">'+l+"</a></dd>"}).join("")+'<dd class="more"><a href="'+i+'">'+g+"</a></dd></dl>").find("a").mousedown(function(k){Lego.cp(30,2678,k.currentTarget.parentNode.className)}).end()},_formatMetro:function(f){return e('<dl class="metro"><dt>Метро рядом</dt>'+Array.map(f,function(j){var h=d.escapeHtml(j.name),g=d.escapeHtml(j.line),i='style="color:#'+j.color+'"';return'<dd><i class="b-pseudo-link" '+i+"><span>"+h+"</span></i>\xA0"+a.humanDistance(j.distance)+"</dd>"}).join("")+"</dl>").find("i").bind("click",this._onMetroClick,this).end()},_onMetroClick:function(h){var f,g;f=e(h.currentTarget).parent().prevAll("dd").length;g=this._location.info.metro[f];this._app.map.panTo(a.GeoPoint.fromJson(g.ll))},_onSaverUpdate:function(){if(this._app.map.getBalloon()){this._app.map.getBalloon().update()}},_onSaverSave:function(){this.trigger("AddToMymaps")}},{init:function(){var f="/css/b-location-balloon/b-location-balloon.";a.Styles.add("geocoder#location",{iconStyle:{href:f+"mark.png",size:new a.Point(21,19),offset:new a.Point(-1,-17)}});a.Styles.add("geocoder#anchor",{iconStyle:{href:f+"anchor.png",size:new a.Point(18,18),offset:new a.Point(-7,-18)}})}});c.Locations=c.List.extend({constructor:function(i){var f,g,h;this.base();this.request=i.request;this.source=i.source;this.reverse=i.reverse;f=i.sll&&a.GeoPoint.fromString(i.sll);h=i.sspn&&a.Point.fromString(i.sspn);this.geoBounds=i.geoBounds||f&&h&&a.GeoBounds.fromCenterAndSpan(f,h);this.results=g=i.results||10;this.distant=false;this.businessesCount=i.businessesCount;this._results=Math.max(Math.floor(10/g),1)*g;this._appendData(i)},_appendData:function(f){this.length=f.found;this.skip=f.skip||0;this.suggest=f.suggest;this.url=f.url;this.vrb=f.vrb;this.error=f.error;Array.forEach(f.locations||[],function(h,g){this[this.skip+g]=new c.Location(h)},this);return this},load:function(f){f=f>>>0;if(f in this){this.skip=f;this.trigger("Load")}else{e.ajax({dataType:"json",url:"/actions/get-locations/",data:{text:this.request,sll:this.geoBounds.getCenter().toString(),sspn:this.geoBounds.getSpan().toString(6),results:this._results,skip:f},success:function(g){this._appendData(g).trigger("Load")}.bind(this),error:function(){this.trigger("Error")}.bind(this)})}return this},getUrl:function(f){return"/?"+d.query({text:f||this.request,sll:this.geoBounds&&this.geoBounds.getCenter().toString(),sspn:this.geoBounds&&this.geoBounds.getSpan().toString(6)})},getUrlParams:function(){return this.selectedIndex===null?{text:this.url}:this[this.selectedIndex].getUrlParams()}});c.Locations.implement(c.Selectable);c.LocationList=b.extend({constructor:function(f,j){var i,g,h;this._locations=f;f.bind("Select Deselect",this._onSelectDeselect,this);this._element=i=e('<div class="b-geocoder"><h2 class="title">Поиск на\xA0карте</h2>'+this._formatLocations(f)+"</div>");g=new c.Pager({itemsCount:f.length,itemsOffset:f.skip,itemsOnPage:f.results});h=f.getUrl();this._pagerView=new c.PagerView(g,h,i);i.append(this._formatBusinessesCount(f));i.find("ul.objects").bind("click",this._onListClick,this);j.append(i);this._count(f)},destroy:function(){this._delete("_pagerView");this._element.remove();delete this._locations},_formatLocations:function(g){var h,f,i;h=g.skip;f=h+g.results;i=g.slice(h,f);return g.length?'<div class="b-geocoder-result">'+this._formatFound(g)+this._formatSuggest(g)+'<ul class="objects">'+i.map(this._formatLocation,this).join("")+"</ul></div>":g.reverse?'<p class="note">Рядом с\xA0«'+g.request+"» объектов не\xA0найдено.</p>":g.error?'<p class="note">Извините, сервис временно недоступен.</p>':'<p class="note">Искомая комбинация на\xA0карте не\xA0встречается.</p>'+this._formatSuggest(g)},_formatFound:function(f){var g=f.length;return g&&!f.distant?'<p class="found">Найден'+d.decline(g,"","о","о")+" "+g+"\xA0объект"+d.decline(g,"","а","ов")+"</p>":f.reverse?'<p class="found">Рядом с\xA0«'+f.request+"» объектов не\xA0найдено.</p>":'<p class="found">Объектов вблизи вас не\xA0найдено.</p>'},_formatLocation:function(f){return'<li><p class="object"><a href="'+f.getUrl()+'">'+d.escapeHtml(f.name)+"</a></p>"+d.escapeHtml(f.description)+this._formatHousesCount(f)+this._formatBuildingsCount(f)+"</li>"},_formatHousesCount:function(f){return f.housesCount?'<br/><a class="houses-count" href="'+f.getUrl()+'&vrb=1">'+f.housesCount+"\xA0дом"+d.decline(f.housesCount,"","а","ов")+"</a>":""},_formatBuildingsCount:function(f){return f.buildingsCount>1?'<br/><a class="houses-count" href="'+f.getUrl()+'&vrb=1">'+f.buildingsCount+"\xA0строени"+d.decline(f.buildingsCount,"е","я","й")+"</a>":""},_formatSuggest:function(f){return(f.suggest?'<div class="b-search-mistake"><p>Возможно, вы искали:</p><p class="correct">\xAB<a href="'+f.getUrl(f.suggest.text)+'"><span>'+f.suggest.items.map(function(g){return g.fix?"<b>"+g.fix+"</b>":g}).join("")+"</span></a>\xBB</p></div>":"")+(f.distant?'<div class="b-search-mistake"><p class="alert">Возможно, вы хотели найти:</p></div>':"")},_formatBusinessesCount:function(f){var g=f.businessesCount;if(g){Lego.cp(30,2640,"businesses")}return g?'<div class="b-finder"><img alt="" src="/i/finder-tel.png" class="b-finder__img"/><h3 class="b-finder__title">Искали организацию?</h3><a class="b-finder__link" href="'+f.getUrl()+'&where" onmousedown="Lego.cp(30, 2641, \'businesses\')">Найден'+d.decline(g,"а","о","о")+" "+g+"\xA0организаци"+d.decline(g,"я","и","й")+"</a></div>":""},_onListClick:function(f){e(f.target).closest("p a").forEach(function(h){var g;g=e(h).closest("li").prevAll().length;this._locations.selectAt(g+this._locations.skip);f.stopPropagation();f.preventDefault();h.blur()},this)},_onSelectDeselect:function(i,g,h){var f;f=i.target;if(f.distant){f.distant=false;this._element.find(".found").replaceWith(this._formatFound(f)).end().find(".b-search-mistake:last").remove().end()}this._element.find("li").eq(h-f.skip).toggleClass("active",i.type==="Select")},_count:function(f){var g;if(f.source){g=f.length;Lego.cp(30,2404,[f.source,g>100?"101~":g>50?"051~100":g>20?"021~050":(g>=10?"0":"00")+g].join("."))}}});c.Houses=c.List.extend({constructor:function(g){var j,f,h;this.base();h=g.houses;for(j=0,f=h.length;j<f;j++){this.push(new c.Location({text:g.text+", "+h[j].num,ll:h[j].ll,geoBounds:g.geoBounds,geoid:g.geoid,kind:"house",zoom:16}))}this[-1]=g.buildingsCount?this[0]:g},getUrlParams:function(){var f;f={};if(this.selectedIndex!==null){e.extend(f,this[this.selectedIndex].getUrlParams());if(this.selectedIndex===-1){f.vrb=1}}return f}});c.Houses.implement(c.Selectable);c.HouseList=b.extend({constructor:function(g,h){var f;this._houses=g;g.bind("Select Deselect",this._onSelectDeselect,this);this._height=Math.ceil(g.length/3);this._element=f=e('<div class="b-geocoder"><h2 class="title">Поиск на\xA0карте</h2><div class="b-geocoder-houses"><h3 class="title"><a href="'+g[-1].getUrl()+'">'+d.escapeHtml(g[-1].name)+"</a>, все\xA0"+(g[-1].kind==="street"?"дома":"строения")+'</h3><table class="numbers"><tr>'+this._formatHouses(g)+"</tr></table></div></div>");f.find("h3 a").bind("click",this._onStreetClick,this);f.find("table").bind("click",this._onTableClick,this);h.append(f)},destroy:function(){this._element.remove();this._delete("_element");delete this._houses},_formatHouses:function(h){var g,f;f=[];for(g=0;g<h.length;g+=this._height){f=f.concat("<td><ul>",h.slice(g,g+this._height).map(this._formatHouse,this),"</ul></td>")}return f.join("")},_formatHouse:function(f){return'<li><a href="'+f.getUrl()+'">'+d.escapeHtml(f.name.split(", ").slice(-1)[0])+"</a></li>"},_onStreetClick:function(f){this._houses.selectAt(-1);f.currentTarget.blur();return false},_onTableClick:function(f){e(f.target).closest("a").forEach(function(k){var h,g;h=e(k).closest("td").prevAll().length;g=e(k).closest("li").prevAll().length;this._houses.selectAt(h*this._height+g);f.stopPropagation();f.preventDefault();k.blur()},this)},_onSelectDeselect:function(m,l,g){var h,f,k;if(g===-1){k=this._element.find("h3")}else{h=Math.floor(g/this._height);f=g%this._height;k=this._element.find("td").eq(h).find("li").eq(f).find("a")}k.toggleClass("active",m.type==="Select")}});c.GeoXmlView=b.extend({constructor:function(g,i,h){var j,f;this._url=g;this._map=i;this._element=e("<div>Идет загрузка…</div>");this._xml=f=new a.YMapsML(g,{notFromCache:true});this._observers=j=new a.Observers();j.add(f,"Load",this._onLoad,this);j.add(f,"Fault",this._onError,this);h.append(this._element);i.addOverlay(f)},destroy:function(){this._map.removeOverlay(this._xml);this._element.remove();this._delete("_observers")},_onLoad:function(){this._element.html("<strong>Cейчас на карте:</strong><br/>"+d.wbr(d.escapeHtml(this._url))+'<div class="b-alert"><p class="b-alert__text">Яндекс никак не\xA0связан с\xA0размещенной на\xA0карте информацией и\xA0ее\xA0автором.</p></div>')},_onError:function(){this._element.text("Ошибка: не\xA0удалось отобразить XML-документ.")}});c.LocationClicker=b.extend({constructor:function(f,h){var g;this._map=f;this._app=h;this._clicker=new c.PointClicker(f,{cursor:a.Cursor.HELP,hint:"Информация",icon:"/i/buttons/info.png",width:19,index:5}).bind("Select",this._onClickerSelect,this).bind("Click",this._onClickerClick,this);g=new a.Observers();g.add(f,"Update",this._onMapUpdate,this);this._onMapUpdate(f)},_onClickerSelect:function(){Lego.c("stred/pid=30/cid=2665")},_onClickerClick:function(g,f){this._app.loadUrl("/?"+d.query({text:f.toString(),sll:f.toString(),sspn:this._map.getBounds().getSpan().toString(6),z:this._map.getZoom(),source:"mouse"}))},_onMapUpdate:function(f){this._clicker[f.getZoom()>3?"enable":"disable"]()}});c.Router=b.extend({isRouter:true,constructor:function(g){var f;this._app=g;this._link=e("#routerTab");this._minZoom=7;this._coverage=new c.Coverage({regions:[{bb:[[34.781753,54.00168],[40.781834,57.268665]]}]});this._pointClicker=new c.PointClicker(g.map,{hint:"Проложить маршрут",icon:"/i/buttons/route.png",width:19,index:3});f=new a.Observers();f.add(g.map,"BoundsChange",this._onBoundsChange,this);this._pointClicker.bind("Select",this._onPointClickerSelect,this);this._onBoundsChange(g.map)},enable:function(){this._link.parent().addClass("current")},disable:function(){this._link.parent().removeClass("current")},setData:function(g){var f;this._route=f=new c.Route(this._app.map.traffic);this._controls=[new c.RouteForm(f,this._app),new c.RouteMap(f,this._app.map),new c.RouteList(f,this._app.panel),new c.RouteClicker(f,this._pointClicker)];f.bind("Update",this._onRouteUpdate,this);f.setData(g.route)},clear:function(){this._route.clear("destroy");while(this._controls.length){this._controls.pop().destroy()}this._delete("_controls","_route");this._link.attr("href","/?rt")},getUrlParams:function(){return this._route.getUrlParams()||{rt:null}},updateTab:function(g,h,f){this._link[0].href="/?"+d.query({rt:g?"~"+g:null,sll:h,sspn:f,l:this._app.map.traffic.isShown()&&"trf"})},_onBoundsChange:function(g){var f=this._minZoom<=g.getZoom()&&this._coverage.covers(g);this._pointClicker[f?"show":"hide"]()},_onPointClickerSelect:function(){if(!this._route){this._link.click()}},_onRouteUpdate:function(){if(this._route.points.length){this._link.attr("href","/?rt")}else{this._link.removeAttr("href")}}});c.Route=b.extend({constructor:function(f){this.base();this.points=[];this.stages=[];this._traffic=f;this._observers=new a.Observers();this._observers.add(f,"RegionChange",this._onTrafficUpdate,this)},destroy:function(){this._delete("_observers");this.base()},setData:function(f){this.traffic=f.traffic||0;this.trafficTime="";this._onTrafficUpdate(this._traffic);this.error=f.error;f.points.forEach(this._addPoint,this);f.stages.forEach(this._addStage,this);this._update();this._count(f.source)},clear:function(f){this._removeStages();this._removePoints();delete this.error;this._update(f)},_onTrafficUpdate:function(g){var h,f;if(g.isShown()&&this.traffic&&!this.trafficTime){h=g.getRegionData(g.getCurrentRegions()[0]);f=h&&h.stat&&h.stat.localTime||"";if(f){this.trafficTime=f;this.trigger("TrafficUpdate");this._observers.destroy()}}},addPoint:function(g,f){this._addPoint(g,f);this._update()},removePointAt:function(f){this._removePointAt(f);this._update()},_addPoint:function(h,f,g){var j,i;j=g?g.length-1:this.points.length;j=Math.max(1,j);i=new c.RoutePoint(h,f,j);i.bind("DragEnd Change",this._onPointChange,this);this.points.splice(f,0,i);this.trigger("AddPoint",[i,f])},_removePointAt:function(f){this.points.splice(f,1).forEach(function(g){this.trigger("RemovePoint",[g,f]);g.destroy()},this)},_removePoints:function(){while(this.points.length){this._removePointAt(this.points.length-1)}},_addStage:function(i,g){var h,f;h=this.points.slice(g,g+2);f=new c.RouteStage(i,h);f.bind("DragEnd",this._onPointChange,this);this.stages.push(f);this.trigger("AddStage",[f,g])},_removeStageAt:function(f){this.stages.splice(f,1).forEach(function(g){this.trigger("RemoveStage",[g,f]);g.destroy()},this)},_removeStages:function(){while(this.stages.length){this._removeStageAt(this.stages.length-1)}},getUrl:function(f){return"/?"+d.query(e.extend(this.getUrlParams(f),{l:this.traffic?"trf":""}))},getUrlParams:function(g){var i,h,f;h=e.map(this.points,function(j){return j.toString()||null});if(g){h.reverse()}else{f=e.map(this.stages,function(j,k){return e.map(j.via,function(m,l){h.splice(k+l+1,0,m.geoPoint);return k+l+1})})}i=e.map(this.points,function(j){return j.getSearchBounds()||null});i=a.GeoBounds.fromGeoBoundsList(i);return h.length>1&&{rt:h.join("~"),via:f&&f.join("~"),sll:i&&"37.622,55.75",sspn:i&&"5.061145,2.703702"}},_getRequestParams:function(j){var f,h,i,g;f=this.points.length>1;i=j?"geoPoint":"request";h=e.map(this.points,function(k){return k[i]||(f=false)});g=e.map(this.stages,function(k,l){return e.map(k.via,function(n,m){h.splice(l+m+1,0,n.geoPoint);return l+m+1})});return f&&{rt:h.join("~"),via:g.join("~"),sll:"37.622,55.75",sspn:"5.061145,2.703702",l:this.traffic?"trf":"",time:this.trafficTime}},getGeoBounds:function(){var f;f=e.map(this.stages,function(g){return g.geoBounds||null});return a.GeoBounds.fromGeoBoundsList(f)},reload:function(f){var g;if((g=this._getRequestParams())){e.ajax({url:"/actions/get-route/",dataType:"json",data:g,success:function(h){this.error=h.error;this._removeStages();this._removePoints();h.points.forEach(this._addPoint,this);h.stages.forEach(this._addStage,this);this._update(f);this._count(f)}.bind(this)})}},reloadStages:function(){var f;if((f=this._getRequestParams(1))){e.ajax({url:"/actions/get-route/",dataType:"json",data:f,success:function(g){this.error=g.error;this._removeStages();g.stages.forEach(this._addStage,this);this._update()}.bind(this)})}},_update:function(g){var f,i,h;i=h=0;f=!!this.stages.length;this.stages.forEach(function(j){i+=j.distance;h+=j.duration;f=f&&!!j.segments.length},this);h=Math[h<60?"ceil":"round"](h/60)*60;this.distance=i;this.duration=h;this.status=f?200:404;this.trigger("Update",[g])},_onPointChange:function(f){this.reload(f.type==="DragEnd"?"mouse":"hands")},_count:function(g){var f;f=this.points.length>1;this.points.forEach(function(h){f=f&&h.request});if(f){Lego.cp(30,2406,[this.traffic?"traffic":"plain",g,this.status===200?"found":"empty"].join("."))}}});c.RoutePoint=b.extend({constructor:function(h,g,i){var f;this.base();this.request=h.request;if(h.locations){f=new c.Locations(h.locations);this._location=f.length&&f[0]}this.geoPoint=h.geoPoint||h.ll&&a.GeoPoint.fromJson(h.ll)||this._location&&this._location.geoPoint;this.index=g;this.order=!!g+(g===i)},toString:function(){return String(this._location&&this._location.text||this.geoPoint||"")},getSearchBounds:function(){return this._location?this._location.geoBounds:null},getUrl:function(){return this._location?this._location.getUrl():"/"}});c.RouteStage=b.extend({constructor:function(g,f){this.base();this.distance=g.distance;this.duration=g.duration;this.geoBounds=g.bb&&a.GeoBounds.fromJson(g.bb);this.encodedPoints=g.encodedPoints;this.levels=g.levels;this.segments=(g.segments||[]).map(function(h){return new c.RouteSegment(h)});b(this.segments).extend(c.Selectable);this.via=(g.via||[]).map(function(h){return{index:h.index,geoPoint:a.GeoPoint.fromJson(h.ll)}});this.adjacentPoints=f},destroy:function(){while(this.segments.length){this.segments.pop().destroy()}this.base()}});c.RouteSegment=b.extend({constructor:function(f){var g;g=[];if(f.dir){g.push(this._directions[f.dir])}if(f.exit){g.push("съезд")}if(f.street){g.push(f.street)}this.text=d.capitalize(g.join(", "));this.distance=f.distance;this.geoPoint=f.ll&&a.GeoPoint.fromJson(f.ll)},_directions:[null,"правее","направо","направо","разворот","налево","налево","левее"]});c.RouteForm=b.extend({constructor:function(f,h){var g;this.base();this._app=h;this._route=f;this._element=g=e("#b-search_router");this._from=g.find("[name=from]");this._to=g.find("[name=to]");f.bind("Update",this._onRouteUpdate,this);g.closest(".b-head-search").addClass("b-head-search_router");g.bind("submit",this._onSubmit,this)},destroy:function(){this._element.unbind("submit",this._onSubmit);this._element.closest(".b-head-search").removeClass("b-head-search_router");this._route.unbind("Update",this._onRouteUpdate);this._delete("_to","_from","_element")},_onRouteUpdate:function(){var g,f;f=this._route.points;g=f.length;this._from.val(g?f[0].request:"");this._to.val(g>1?f[g-1].request:"")},_onSubmit:function(f){this._app.loadUrl("/?"+e.param({rt:this._from.val()+"~"+this._to.val(),sll:"37.622,55.75",sspn:"5.061145,2.703702",l:this._route.traffic?"trf":"",source:"hands"}));return false}});c.RouteMap=b.extend({constructor:function(f,g){this.base();this._map=g;this._points=[];this._stages=[];this._route=f;f.bind("AddPoint.Map",this._onRouteAddPoint,this);f.bind("RemovePoint.Map",this._onRouteRemovePoint,this);f.bind("AddStage.Map",this._onRouteAddStage,this);f.bind("RemoveStage.Map",this._onRouteRemoveStage,this);f.bind("Update.Map",this._onRouteUpdate,this);this._observers=new a.Observers();this._observers.add(g.traffic,"Show Hide LoadData RegionChange",this._onTrafficUpdate,this)},destroy:function(){this._delete("_observers");this._route.unbind(".Map");this.base()},_onRouteAddPoint:function(g,i,f){var h=new c.RouteMapPoint(i,this._map);this._points.splice(f,0,h)},_onRouteRemovePoint:function(g,h,f){this._points.splice(f,1)[0].destroy()},_onRouteAddStage:function(i,g,h){var f=new c.RouteMapStage(g,this._map);this._stages.splice(h,0,f)},_onRouteRemoveStage:function(h,f,g){this._stages.splice(g,1)[0].destroy()},_onRouteUpdate:function(f,g){if(g==="hands"){this._map.setBounds(this._route.getGeoBounds())}},_onTrafficUpdate:function(i){var j,f,h,g;f=this._route;if((h=+i.isShown())){j=i.getRegionData(i.getCurrentRegions()[0]);g=j&&j.stat&&j.stat.localTime||""}else{g=""}if(f.trafficTime!==g){f.trafficTime=g;f.traffic=h;f.reloadStages()}}},{dragInterval:200,init:function(){var h,f,g;f=new a.LineStyle();f.strokeColor="6C00FF99";f.strokeWidth=5;g=new a.Style();g.lineStyle=f;a.Styles.add("router#stage",g);h=new a.IconStyle();h.href="/i/via.png";h.size=new a.Point(18,19);h.offset=new a.Point(-9.5,-10);g=new a.Style();g.iconStyle=h;a.Styles.add("router#via",g)}});c.RouteMapPoint=b.extend({constructor:function(j,h){var g,i,f;this.base();this._routePoint=j;if(j.geoPoint){g=String.fromCharCode(1040+j.index);this._placemark=f=new a.Placemark(j.geoPoint,{draggable:true,style:"compact#"+this._colors[j.order]+"Point"});f.setIconContent(g);f.setBalloonContent(j.toString());h.addOverlay(f);this._observers=i=new a.Observers();i.add(f,"DragStart",this._onDragStart,this);i.add(f,"Drag",e.throttle(this._onDrag,c.RouteMap.dragInterval,this));i.add(f,"DragEnd",this._onDragEnd,this);j.bind("Select",this._onRoutePointSelect,this)}},destroy:function(){if(this._placemark){this._delete("_observers");this._routePoint.unbind("Select",this._onRoutePointSelect);this._placemark.getMap().removeOverlay(this._placemark)}this.base()},_onDragStart:function(f){f.metaDataProperty.drag=true},_onDrag:function(f){if(f.metaDataProperty.drag){this._routePoint.geoPoint=f.getGeoPoint();this._routePoint.trigger("Drag")}},_onDragEnd:function(f){delete f.metaDataProperty.drag;this._routePoint.request=f.getGeoPoint().toString();this._routePoint.trigger("DragEnd")},_onRoutePointSelect:function(){this._placemark.openBalloon()},_colors:["red","grey","blue"]});c.RouteMapStage=b.extend({constructor:function(j,k){var m,g,i,l,f,h;this.base();this._map=k;this._routeStage=j;g=!e.browser.opera||e.browser.version>=9.5;if(j.encodedPoints){this._polyline=h=this._createPolyline(j);k.addOverlay(h);this._mouseObservers=l=new a.Observers();l.add(h,"MouseEnter",this._onMouseEnter,this);l.add(h,"MouseLeave",this._onMouseLeave,this);this._cursor=m=this._createVia(new a.GeoPoint(0,0));l.add(m,"MouseMove",this._onMouseMove,this);l.add(m,"MouseLeave",this._onMouseLeave,this);this._viaObservers=l=new a.Observers();l.add(m,"DragStart",this._onCursorDragStart,this);if(g){i=c.RouteMap.dragInterval;f=e.throttle(this._onViaDrag,i,this);l.add(m,"Drag",f)}l.add(m,"DragEnd",this._onViaDragEnd,this);this._via=j.via.map(function(n){n=this._createVia(n.geoPoint);l.add(n,"DragStart",this._onViaDragStart);if(g){l.add(n,"Drag",f)}l.add(n,"DragEnd",this._onViaDragEnd,this);l.add(n,"DblClick",this._onViaDblClick,this);k.addOverlay(n);return n},this);if(g){j.adjacentPoints.forEach(function(n){n.bind("Drag",this._reloadPolyline,this)},this)}this._requests=[]}j.segments.bind("Select",this._onSelect,this)},destroy:function(){var f;f=this._map;if(this._balloonOpen){f.closeBalloon()}if(this._polyline){while(this._requests.length){this._requests.pop().abort()}this._delete("_viaObservers","_mouseObservers");this._via.forEach(f.removeOverlay,f);f.removeOverlay(this._polyline);f.removeOverlay(this._cursor)}f.closeBalloon();this._routeStage.segments.unbind("Select",this._onSelect);this.base()},_createPolyline:function(f){return a.Polyline.fromEncodedPoints(f.encodedPoints,f.levels,{hasBalloon:false,style:"router#stage"})},_createVia:function(f){return new a.Placemark(f,{draggable:true,hasBalloon:false,style:"router#via"})},_onSelect:function(g,f){this._balloonOpen=true;this._map.openBalloon(f.geoPoint,f.text,{onClose:function(){delete this._balloonOpen}})},_onMouseEnter:function(f,g){var i,h;i=this._cursor;h=f.getClosestPoint(g.getCoordPoint(true));i.setGeoPoint(h.point);i.metaDataProperty.index=h.index;if(!i.getMap()){this._map.addOverlay(i)}i._$iconContainer.css("z-index",a.ZIndex.OVERLAY-1)},_onMouseMove:function(g,f){g.metaDataProperty.hover=true;g.setGeoPoint(this._polyline.getClosestPoint(f.getCoordPoint(true)).point)},_onMouseLeave:function(f){if(f instanceof a.Polyline){f=this._cursor;setTimeout(function(){if(f.getMap()&&!f.metaDataProperty.hover){f.getMap().removeOverlay(f)}},0)}else{setTimeout(function(){if(f.getMap()&&!f.metaDataProperty.drag){delete f.metaDataProperty.hover;f.getMap().removeOverlay(f)}},0)}},_onCursorDragStart:function(j){var h,g,f;f=this._routeStage.via;g=j.metaDataProperty.index;for(h=0;h<f.length&&f[h].index<=g;h++){}f.splice(h,0,{index:g});this._via.splice(h,0,j);this._mouseObservers.destroy();this._onViaDragStart(j)},_onViaDragStart:function(f){f.metaDataProperty.drag=true},_onViaDrag:function(g){var f;if(g.metaDataProperty.drag){f=e.inArray(g,this._via);this._reloadPolyline(g.getGeoPoint(),f)}},_onViaDragEnd:function(g){var f;delete g.metaDataProperty.drag;f=e.inArray(g,this._via);this._reloadPolyline(g.getGeoPoint(),f,true)},_onViaDblClick:function(g){var f;f=e.inArray(g,this._via);this._routeStage.via.splice(f,1);this._routeStage.trigger("DragEnd")},_reloadPolyline:function(g,j,f){var k,h,l,i;h=this._routeStage;k=h.adjacentPoints.map(function(m){return m.geoPoint});i=h.via.map(function(m,n){k.splice(n+1,0,n===j?g:m.geoPoint);return n+1});l=this._map.traffic.isShown();this._requests.push(e.ajax({url:"/actions/get-route/",dataType:"json",cache:!l,data:{rt:k.join("~"),via:i.join("~"),l:l?"trf":"",snap:this._map.getZoom()<14?"rough":"",rt_output:"geometry"},success:function(n){var m=n.stages[0];if(m&&m.encodedPoints){if(typeof j==="number"){h.via[j].geoPoint=a.GeoPoint.fromJson(m.via[j].ll)}if(!f){this._map.removeOverlay(this._polyline);this._polyline=this._createPolyline(m);this._map.addOverlay(this._polyline)}}if(f){h.trigger("DragEnd")}}.bind(this)}))}});c.RouteList=b.extend({constructor:function(f,g){this.base();this._route=f;this._points=[];this._stages=[];this._element=e('<div class="b-route"><h2 class="title"></h2><p class="error"></p><dl><dd class="total"></dd><dd class="b-points"><ul class="b-points__list"></ul></dd></dl><p class="alert"><i class="b-icon"><i></i></i>В&#160;режиме бета-тестирования сервис доступен для маршрутов по&#160;Москве и&#160;Московской области.</p></div>');this._list=this._element.find(".b-points__list");f.bind("AddPoint.List",this._onRouteAddPoint,this);f.bind("RemovePoint.List",this._onRouteRemovePoint,this);f.bind("AddStage.List",this._onRouteAddStage,this);f.bind("RemoveStage.List",this._onRouteRemoveStage,this);f.bind("TrafficUpdate.List",this._onRouteUpdate,this);f.bind("Update.List",this._onRouteUpdate,this);g.append(this._element)},destroy:function(){this._route.unbind(".List");this._element.remove();this.base()},_onRouteAddPoint:function(g,i,f){var h;h=new c.RouteListPoint(i);if(f<this._points.length){this._points[f].element.before(h.element)}else{this._list.append(h.element)}this._points.splice(f,0,h)},_onRouteRemovePoint:function(g,h,f){this._points.splice(f,1)[0].destroy()},_onRouteAddStage:function(h,f,g){this._stages.push(new c.RouteListStage(f,this._points[g].element))},_onRouteRemoveStage:function(h,f,g){this._stages.splice(g,1)[0].destroy()},_onRouteUpdate:function(){this._element.find("h2.title").html(this._route.points.length?"Маршрут проезда":"Маршруты проезда <sup>\u03B2</sup>").end().find(".error").text(this._route.error?"Извините, сервис временно не\xA0доступен.":"").end().find("dd.total").html(this._formatStatus(this._route)).end().find("p.alert").toggleClass("g-hidden",this._route.status===200).end()},_onTrafficUpdate:function(){this._element.find(".time").text(this._route.trafficTime)},_formatStatus:function(f){return f.points.length===0?"Задайте начальную и\xA0конечную точки маршрута в\xA0полях «От» и\xA0«До» или поставьте\xA0их прямо на\xA0карте.":!f.points[0].request?"Укажите начальную точку маршрута.":!f.points[1]||!f.points[1].request?"Укажите конечную точку маршрута.":f.status===200?"Общая длина: <strong>"+a.humanDistance(f.distance)+"</strong><br/>Среднее время в\xA0пути: <strong>"+a.humanDuration(f.duration)+"</strong><br/>"+(f.traffic?" c\xA0учетом пробок"+(f.trafficTime?' на\xA0<strong class="time">'+f.trafficTime+"</strong>":""):" без\xA0учета пробок")+'<p class="b-route__reverse"><a href="'+f.getUrl(true)+'">Обратный маршрут</a></p>':""}});c.RouteListPoint=b.extend({constructor:function(f){this.base();this._routePoint=f;this.element=e('<li class="b-points__point '+this._classes[f.order]+'"><b class="b-points__icon">'+String.fromCharCode(1040+f.index)+"</b></li>").append(f.geoPoint?this._formatLink(f):this._formatForm(f))},destroy:function(){this.element.remove();this.base()},_classes:["b-points__start b-points__select","b-points__middle","b-points__end b-points__select"],_formatLink:function(f){return e('<a class="b-points__name" href="'+d.escapeHtml(f.getUrl())+'">'+d.escapeHtml(f)+"</a>").bind("click",this._onLinkClick,this)},_onLinkClick:function(f){f.currentTarget.blur();this._routePoint.trigger("Select");return false},_formatForm:function(f){return e('<form action="/" method="get"><ul class="b-point-search"><li class="search"><input class="b-points__text" name="text"/><input class="b-points__submit" type="submit" value="Найти"/></li>'+(f.request?'<li class="query">По запросу <strong>'+d.escapeHtml(f.request)+"</strong> ничего не найдено.</li>":"")+"</ul></form>").find(".b-points__text").val(f.request).bind("change",this._onInputChange,this).end().bind("submit",this._onFormSubmit,this)},_onInputChange:function(f){this._routePoint.request=f.currentTarget.value},_onFormSubmit:function(){this.element.find(".b-points__text").trigger("change");if(this._routePoint.request){this._routePoint.trigger("Change")}return false}});c.RouteListStage=b.extend({constructor:function(f,g){this.base();this._routeStage=f;this.element=e(f.segments.length?'<li class="b-stage"><ul class="b-stage__list">'+f.segments.map(this._formatSegment,this).join("")+"</ul></li>":'<li class="b-stage"><p class="b-stage__error">Невозможно проложить маршрут между заданными точками.</p></li>').bind("click",this._onClick,this);g.after(this.element)},destroy:function(){this.element.remove();this.base()},_formatSegment:function(g,f){return'<li class="b-stage__item"><i class="b-stage__number">'+(f+1)+'.</i><a class="b-stage__link" href="javascript:void(0)">'+d.escapeHtml(g.text)+'</a><b class="b-stage__length">'+a.humanDistance(g.distance)+"</b></li>"},_onClick:function(f){e(f.target).closest("a").forEach(function(h){var g;g=e(h).parent().prevAll().length;this._routeStage.segments.selectAt(g);f.stopPropagation();f.preventDefault();h.blur()},this)}});c.RouteClicker=b.extend({constructor:function(f,g){this.base();this._route=f;this._pointClicker=g;e(document).bind("keyup",this._onDocumentKeyUp,this);g.bind("Select.RC",this._onPointClickerSelect,this);g.bind("Click.RC",this._onPointClickerClick,this);f.bind("Update",this._onRouteUpdate,this)},destroy:function(){this._route.unbind("AddPoint RemovePoint",this._onRouteChange);e(document).unbind("keyup",this._onDocumentKeyUp);this._pointClicker.unbind(".RC").deselect();delete this._pointClicker;delete this._route;this.base()},_getClickableIndex:function(){var f,g;g=this._route.points;for(f=0;g[f]&&g[f].geoPoint;f++){}return f>=2?null:f},_onDocumentKeyUp:function(f){if(f.keyCode===27){this._route.clear()}},_onPointClickerSelect:function(){if(this._getClickableIndex()===null){this._route.clear()}},_onPointClickerClick:function(h,f){var g;g=this._getClickableIndex();if(this._route.points[g]){this._route.removePointAt(g)}this._route.addPoint({request:f.toString(),geoPoint:f},g);this._route.reload("mouse");this._onRouteUpdate()},_onRouteUpdate:function(g,h){if(h!=="destroy"){var f=this._getClickableIndex()!==null;this._pointClicker[f?"select":"deselect"]()}}});c.Mymaps=b.extend({isMymaps:1,constructor:function(f){this._app=f;this._link=e("#mymapsTab");this._clicker=new c.PointClicker(f.map,{hint:"Добавить метку",icon:"/i/buttons/mymaps.png",width:19,index:4}).bind("Select",this._enterEditMode,this)},enable:function(){this._link.parent().addClass("current");this._element=e('<div class="b-mymaps"></div>');this._controls=[]},disable:function(){this._clicker.deselect();this._link.parent().removeClass("current");this._delete("_element","_controls")},_messages:{400:"Некорректный запрос",403:"У\xA0вас нет прав на\xA0просмотр этой карты.",404:"Карта не\xA0существует.",410:"Карта удалена автором.",500:"Извините, сервис временно недоступен"},setData:function(f){e.xLazyLoader({name:"mymaps",js:"/js/_mymaps.js",css:"/pages/mymaps/_mymaps"+(e.browser.msie?".ie":"")+".css",success:function(){e.xLazyLoader("enable","mymaps");c.UserPointEditor.enable();this._setData(f)}.bind(this)})},_setData:function(l){var j,n,f,m,h,k,g,i;j=this._app;m=this._element;n=this._controls;h=this._mapList=l.mapList&&new c.MapList(l.mapList).bind("Remove",this._onMapListRemove,this);this._author=l.author&&new c.User(l.author);k=h&&new c.Pager({itemsCount:h.total,itemsOffset:h.first,itemsOnPage:h.limit});i=this._userMap=l.userMap&&new c.UserMap(l.userMap).bind("Delete",this._onUserMapDelete,this);if(l.home){this._link.removeAttr("href")}switch((this._mode=l.mode)){case"ViewUserMaps":g="/users/"+l.author+"/";n.push(new c.MapListView(h,this._author,m),new c.PagerView(k,g,m));f="user_maps";break;case"ViewOwnMaps":n.push(new c.MapListEditor(h,m),new c.PagerView(k,"/?um",m));f="own_maps";break;case"ViewUserMap":if(i.status===200){n.push(new c.UserGeocoder(j,m),new c.UserMapView(i,m,j.map))}else{m.append('<h2 class="title">Ошибка</h2><p>'+this._messages[i.status]+"</p>")}f="view_map";break;case"EditOwnMap":n.push(new c.UserGeocoder(j,m),new c.UserMapEditor(i,j,m),new c.UserAuthBlock(j,m),new c.UserPointClicker(i,this._clicker),new c.UserObjectsEditor(i,m,j.map));if(this._userObjectToAdd){this._userMap.add(this._userObjectToAdd);delete this._userObjectToAdd}f=i.id?"edit_map":"create_map";break}this._clicker[l.mode==="EditOwnMap"?"select":"deselect"]();m.appendTo(j.panel);Lego.cp(30,2638,f||"")},clear:function(){while(this._controls.length){this._controls.pop().destroy()}this._link.attr("href","/?um");this._delete("_author","_mapList","_userMap","_mode");this._element.empty().remove();c.UserPointEditor.disable();e.xLazyLoader("disable","mymaps")},getUserMap:function(){return this._userMap},addUserObject:function(f,g){if(this._mode==="EditOwnMap"){this._userMap.add(g)}else{this._userObjectToAdd=g;this._enterEditMode(f)}},getUrlParams:function(){return this._author?{path:"users/"+this._author.login+"/"}:{um:this._userMap&&this._userMap.id||null}},_enterEditMode:function(f){if(this._mode!=="EditOwnMap"){if(this._mode==="ViewUserMap"&&this._userMap.isOwn){f=this._userMap.id}this._app.loadUrl("/mymaps/edit.xml?"+e.param({um:f||""}))}},_onUserMapDelete:function(){this._app.loadUrl("/?um")},_onMapListRemove:function(g){var h,f;h=g.currentTarget;f=h.first;if(f&&!h.length){f-=h.limit}this._app.loadUrl("/?um&skip="+f)}});c.MymapsSaver=b.extend({constructor:function(f,g){this._element=e(f).bind("click",this._open,this);this._mymaps=g.services.mymaps},destroy:function(){this._close();this._delete("_usermaps");this._element.unbind()},setData:function(f){this._data=f;this._close()},_open:function(){var f,g;g=this._mymaps.getUserMap();if(g&&g.isOwn){this._saveToUsermap(g.id);return}f="b-location-balloon__saver";this._form=e('<form class="'+f+'"><label for="mymaps.saver.id" class="'+f+'__label">В какую карту сохранить?</label><select id="mymaps.saver.id" class="'+f+'__select"><option value="">Создать новую</option></select> <input type="submit" value="Сохранить"/> <input type="reset" value="Отмена"/></form>').bind("submit",function(){this._saveToUsermap(this._form.find("select").val());return false},this).bind("reset",this._close,this);if(!this._usermaps){this._usermaps=new c.MapList();this._usermaps.load(this._onUsermapsLoad,this)}else{this._onUsermapsLoad()}this._element.addClass("g-hidden").after(this._form);this.trigger("Update")},_close:function(){if(!this._form){return}this._element.removeClass("g-hidden");this._form.remove();delete this._form;this.trigger("Update")},_onUsermapsLoad:function(){if(!this._form){return}this._form.find("select").append(this._usermaps.map(function(f){return'<option value="'+d.escapeHtml(f.id)+'">'+d.escapeHtml(f.name||"Без названия")+"</option>"}).join(""));this.trigger("Update")},_saveToUsermap:function(g){var f=e.extend({isNew:1},this._data);this._mymaps.addUserObject(g,f);this.trigger("Save")}},{createView:function(){return'<span class="mymaps-saver b-pseudo-link"><span>Сохранить в\xA0«Моих картах»</span></span>'}});c.MapList=c.List.extend({constructor:function(f){this.base();this._setData(f||{})},destroy:function(){while(this.length){this.pop().destroy()}this.base()},_setData:function(f){this.total=f.total;this.first=f.first;this.limit=f.limit;(f.maps||[]).forEach(this._add,this)},load:function(g,f){e.ajax({dataType:"json",url:"/actions/get-usermaps/",success:function(h){this._setData(h);g.call(f,this)}.bind(this),error:function(){g.call(f,this)}})},_add:function(g){var f=new c.UserMap(g);f.bind("Delete",this._onUserMapDelete,this);this.push(f)},_removeAt:function(f){this.splice(f,1).forEach(function(g){g.destroy();this.trigger("Remove",[g,f])},this)},_onUserMapDelete:function(f){this._removeAt(e.inArray(f.target,this))}});c.UserMap=b.extend({constructor:function(f){this.base();f=c.UserMap.checkData(f);this.id=f.id||"";this.name=f.name||"";this.description=f.description||"";this.author=new c.User(f.author);this.isOwn=f.isOwn;this.status=f.status;this.access=f.access;this.created=new Date(f.created*1000);this.updated=new Date(f.updated*1000);this.objects=[];this._modified=false;this._styles=f.representation&&f.representation.styles||{};(f.objects||[]).forEach(this._add,this)},destroy:function(){while(this.objects.length){this.objects.pop().destroy()}this.base()},add:function(f){this.trigger("Add",[this._add(f),this.objects.length-1]);this._modified=true},removeAt:function(f){this.trigger("Remove",[this._removeAt(f),f]);this._modified=true},_add:function(g){var f=new c.UserObject(g,this._styles);f.bind("Delete",this._onDeleteUserObject,this);this.objects.push(f);return f},_removeAt:function(f){var g=this.objects.splice(f,1)[0];g.destroy();return g},set:function(f,g){this[f]=g;this._modified=true},isModified:function(){var f;if(!(f=this._modified)){this.objects.forEach(function(g){f=f||g.isModified()})}return f},formatDate:function(){var g,f;g=this.created;f=this.updated;return"создана "+d.humanDate(g)+" в\x0A"+d.humanTime(g)+(+g!==+f?"<br/>обновлена "+d.humanDate(f)+" в\x0A"+d.humanTime(f):"")},formatAuthor:function(){return this.author.login&&"автор: "+this.author.getHtml()},formatAccess:function(){switch(this.access){case 65535:return"показывать: всем";case 5:return"показывать: только по\xA0ссылке";case 1:return"показывать: только мне"}},_onDeleteUserObject:function(f){this.removeAt(e.inArray(f.target,this.objects))},toXml:function(){var i,f,g,h;h={};i=this.objects.map(function(j){if((g=j.style)&&g["@gml:id"]){h[g["@gml:id"]]=g}return j.toXml()},this);f="";Object.forEach(h,function(j){f+=this._styleToXml(j)},this);return'<?xml version="1.0"?><ym:ymaps xmlns:ym="http://maps.yandex.ru/ymaps/1.x">'+(f?'<Representation xmlns="http://maps.yandex.ru/representation/1.x" xmlns:gml="http://www.opengis.net/gml">'+f+"</Representation>":"")+'<ym:GeoObjectCollection xmlns="http://www.opengis.net/gml"><metaDataProperty><MapMetaData xmlns="http://maps.yandex.ru/mymaps/1.x"><sid>'+this.id+"</sid><access>"+this.access+"</access></MapMetaData></metaDataProperty><name>"+d.cdata(this.name)+"</name><description>"+d.cdata(this.description)+"</description><featureMembers>"+i.join("")+"</featureMembers></ym:GeoObjectCollection></ym:ymaps>"},_styleToXml:function(h){var g;function f(k,j){if(j.charAt(0)==="@"){g+=" "+j.slice(1)+'="'+k+'"'}}function i(k,j){if(j.charAt(0)!=="@"){g+="<"+j;if(typeof k==="object"){Object.forEach(k,f)}g+=">";if(typeof k==="object"){Object.forEach(k,i)}else{g+=k}g+="</"+j+">"}}g="";i(h,"Style");return g},_postSettings:{type:"post",cache:false,url:"/actions/post-usermap/"},save:function(){e.ajax(e.extend(!this.id?{data:{action:"create"},dataType:"text",success:function(f){this.id=f;this.save()}.bind(this)}:{data:{action:"update",map:this.toXml()},dataType:"json",success:function(f){c.UserMap.cacheData(f);this.trigger("Save")}.bind(this)},this._postSettings));return this},"delete":function(){e.ajax(e.extend({data:{action:"delete",id:this.id},dataType:"text",success:function(){this.trigger("Delete")}.bind(this)},this._postSettings));return this}},{_dataCache:{},cacheData:function(f){this._dataCache[f.id]=f},checkData:function(g){var f;if((f=this._dataCache[g.id])){if(g.updated<f.updated||g.status===404){g=f}else{delete this._dataCache[g.id]}}return g}});c.User=b.extend({constructor:function(f){this.login=f||""},getText:function(){return'<b class="b-user"><b class="b-user__first-letter">'+this.login.slice(0,1)+"</b>"+this.login.slice(1)+"</b>"},getHtml:function(){return this._html||(this._html='<b class="b-user"><a class="b-user__link" href="/users/'+this.login+'/"><b class="b-user__first-letter">'+this.login.slice(0,1)+"</b>"+this.login.slice(1)+"</a></b>")}});(function(){var f={toCity:"увеличьте масштаб",instruction:", чтобы увидеть пробки",noRegionData:"Данные о&#160;пробках не&#160;доступны",jams:"Пробки",speed:"Скорость",length:"Длина",kmh:"км/ч",blocked:"Движение перекрыто"},h=function(k){var j=k.regionData;this._master=k.master;this._regionId=k.regionData.regionId;this._hasData=!!j.stat;if(this._hasData){this._$element=e('<div class="b-traffic-balloon'+(j.stat.level?" b-traffic-balloon_level":"")+'"><h3>'+j.name+'</h3><div class="inner">'+(j.stat.level?'<i class="traffic traffic_'+j.stat.style+'"></i><h4>'+f.jams+" "+j.stat.level+" "+d.decline(j.stat.level,"балл","балла","баллов")+"</h4><p>"+j.stat.localTime+" "+j.stat.hint+"</p>":"")+'<p class="zoom"><a class="b-pseudo-link" href="javascript:void(0)"><span>'+f.toCity+"</span></a>"+f.instruction+"</p></div></div>")}else{this._$element=e('<div class="b-traffic-balloon b-traffic-balloon_level"><div class="inner"<i class="traffic"></i><h4>'+j.name+'</h4><p class="access">'+f.noRegionData+"</p></div></div>")}};e.extend(h.prototype,{onAddToParent:function(j){var k=this._master,l=this._regionId;if(this._hasData){this._$element.find("a").bind("click",function(){k.showRegion(l)})}this._$element.appendTo(j)},onRemoveFromParent:function(){this._$element.find("a").unbind("click");this._$element.remove()},update:function(){}});a.Templates.add("yamaps#regionBalloon",new a.LayoutTemplate(h));var i=["brown","red","yellow","green"],g=function(m){var p='<i class="bit"><i></i></i>',j=i[parseInt(m.type)],k="<p>"+f.length+": "+a.humanDistance(m.length)+"</p>",n=m.from?"<p>"+m.from+(m.to?"&nbsp;→ "+m.to:"")+"</p>":"",l=m.speed?f.speed+": "+m.speed+"\xA0"+f.kmh:"",o=parseInt(m.type)>0?l:f.blocked;this._$element=e('<table class="b-tooltip b-tooltip_traffic b-tooltip_'+j+'"><tbody><tr class="b-tooltip-head"><td class="b-tooltip-l">'+p+'</td><td class="b-tooltip-m">'+p+'</td><td class="b-tooltip-r">'+p+'</td></tr><tr class="b-tooltip-headline"><td class="b-tooltip-l">'+p+'</td><td class="b-tooltip-m"><h3>'+o+'</h3></td><td class="b-tooltip-r">'+p+'</td></tr><tr class="b-tooltip-body"><td class="b-tooltip-l">'+p+'</td><td class="b-tooltip-m"><h3>'+m.region+"</h3>"+n+k+'</td><td class="b-tooltip-r">'+p+'</td></tr><tr class="b-tooltip-foot"><td class="b-tooltip-l">'+p+'</td><td class="b-tooltip-m">'+p+'</td><td class="b-tooltip-r">'+p+"</td></tr></tbody></table>")};e.extend(g.prototype,{onAddToParent:function(j){this._$element.appendTo(j)},onRemoveFromParent:function(){this._$element.remove()},update:function(){}});a.Templates.add("yamaps#jamHint",new a.LayoutTemplate(g))})();c.TrafficHint=function(h,f){var j,l,m,k;m=16;function g(){j=new c.Hint(f,new a.ControlPosition(null,new a.Point(40,60)),"Поднимитесь выше,<br/> чтобы увидеть пробки.",{direction:c.Hint.LEFT});j.show()}function n(){if(j){j.destroy();j=null}}function i(){if(!j===f.getZoom()>m){if(!j){g()}else{n()}}}k=new a.Observers();k.add(h,"Show",function(){l=new a.Observers();l.add(f,"Update",i);i()});k.add(h,"Hide",function(){n();l.destroy();l=null})};c.TrafficButton=b.extend({constructor:function(g){var f,h;this.base();this._traffic=g;this._button=f=e('<div class="b-map-button b-map-button_traffic"><i class="b-round b-round_4 b-round_8fa1b6"><i class="l t"><i></i><b></b></i><i class="r t"><i></i><b></b></i></i><div class="b-map-button-v"><div class="b-map-button-h"><div class="b-map-button-i"><i class="b-signal"><i></i></i><ul class="list"><li class="rating"></li><li class="status"></li><li><span class="b-pseudo-link"><span>Пробки</span></span></li></ul><div class="status"></div></div></div></div><i class="b-round b-round_4 b-round_8fa1b6"><i class="l b"><i></i><b></b></i><i class="r b"><i></i><b></b></i></i></div>');this._content=f.find("div.b-map-button-i");this._signal=f.find("i.b-signal i");this._rating=f.find("li.rating");this._status=f.find(".status");this._button.find("span.b-pseudo-link").bind("click",this._onClick,this);h=new a.Observers();h.add(g,"Show Hide",this._onTrafficToggle,this);h.add(g,"LoadData RegionChange ViewSwitch",this._onTrafficUpdate,this)},onAddToToolBar:function(f,g){this._parent=e(g).addClass("g-hidden").append(this._button);this._onTrafficUpdate(this._traffic)},_onTrafficToggle:function(i){var h,f,j,g;f=!!i.isShown();h=i.getState()===a.TrafficControl.LOCAL;j=i.getCurrentRegions()[0];g=j&&i.getRegionData(j).stat;this._button.find(".b-pseudo-link span").text("Пробки");this._button.toggleClass("b-map-button_traffic_open",f&&h);if(g&&g.style){this._signal.attr("class",f?g.style:"")}},_onTrafficUpdate:function(h){var f,i,g;i=h.getCurrentRegions()[0];g=i&&h.getRegionData(i).stat;f=i||h.getState()!==a.TrafficControl.LOCAL;this._parent.toggleClass("g-hidden",!f).closest(".YMaps-buttons").height();if(f&&g){this._update(g)}},_onClick:function(){this._traffic[this._traffic.isShown()?"hide":"show"]()},_update:function(g){var i,h,f;i="level" in g;f=!!this._traffic.isShown();h=this._traffic.getState()===a.TrafficControl.LOCAL;this._button.toggleClass("b-map-button_traffic_open",f&&h);this._content.toggleClass("level",i&&h);this._signal.attr("class",i&&f?g.style:"");this._status.text(g.localTime+(i?" "+g.hint:""));this._rating.add(this._status).attr("title","Общая длина пробок: "+a.humanDistance(g.length).split("&#160;").join("\xA0"));this._rating.text(i?g.level+"\xA0"+d.decline(g.level,"балл","балла","баллов"):"")}});c.TrafficCounter=b.extend({constructor:function(f){var g;g=new a.Observers();g.add(f,"Show Hide ViewSwitch RegionChange",this._onTrafficChange,this)},_onTrafficChange:function(f){var g;g=f.isShown()&&(f.getState()===a.TrafficControl.GLOBAL?10000:f.getCurrentRegions()[0]);if(g&&g!==this._region){Lego.cp(30,2405,g)}this._region=g}});e(function(){app=new c.Application();app.setHomePage(true)})})(window.jQuery,window.YMaps,Base);