(function(B,A){A.block["b-hint-input"]=function(){var F=B(this),D=B("#"+F.attr("for")),E=function(){F.hide()},C=function(){if(!D.attr("value")){F.show()}};D.focus(E).blur(C).bind("change mouseover",function(){if(D.attr("value")){E()}});F.click(function(){D.focus()});D.change()}})(jQuery,window.Lego);(function(B,A){A.block["b-dropdown"]=function(){var F=B(this),H=B('<div class="b-dropdown-popup"><iframe frameborder="0" src="javascript:\'<body style=\\\'background:none;overflow:hidden\\\'>\'"></iframe></div>'),G=F.clone(true).removeClass("g-js").hide(),E=true,C=(function(){if(E){return }H.css("visibility","hidden").before(F).hide();G.hide();E=true}),D;F.before(H);H.after(G);B(document).bind("keydown click",function(I){if(((I.keyCode==27)&&!(I.ctrlKey||I.altKey))||!B(I.target).is(".b-dropdown *")){C()}}).bind("popupsClose.lego",C);H.mouseout(function(){D=setTimeout(C,1000)}).mouseover(function(){clearTimeout(D)});B(this).find(".or").click(function(I){I.preventDefault();if(E){B(document).trigger("popupsClose.lego");var J=B.Event("popupOpen.lego");F.trigger(J);if(!J.isDefaultPrevented()){G.css("display","");H.append(F).css("visibility","").css("display","");E=false}}else{C()}})}})(jQuery,window.Lego);(function(B,A){A.block["b-head-userinfo.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><li class="visible"><a href="http://i.yandex.ru" class="or"><span class="b-pseudo-link"><span><b class="b-user"><b>'+D.substring(0,1)+"</b>"+D.substring(1)+'</b></span></span><i class="arrow"><i class="b-icon"><i></i></i></i></a></li>';B.each(F.services,function(){E+="<li>";if(A.params.id==this.id){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="line"><a href="//passport.yandex.ru/">Паспорт</a></li>';E+='<li><a href="//passport.yandex.ru/passport?mode=changepass&retpath=http://i.yandex.ru/">Сменить пароль</a></li>';E+="</ul></div>";C.find(".b-user").replaceWith(E);A.blockInit(C,".b-dropdown")})}}})(jQuery,window.Lego);var Museums={};y5.namespace("Museums","museums.js","utf-8");y5.block("Museums:");function consoleWrite(B){var A=document.getElementById("console");A.innerHTML=A.innerHTML+B}Museums.Constants={categories:["museums","kino","estate","monuments","library","exhibitions","also"],itemsPerPage:10,eventsPerPage:4,serverTypes:{mus:"museums",theatre:"kino",farm:"estate",monument:"monuments",library:"library",exhibition:"exhibitions",other:"also"},toServerTypes:{museums:"museum",kino:"theatre",estate:"farm",monuments:"monument",library:"library",exhibitions:"exhibition",also:"other"},categoriesIconSize:{museums:{custom:[31,29],selected:[31,29]},kino:{custom:[34,31],selected:[35,32]},estate:{custom:[34,31],selected:[31,36]},monuments:{custom:[22,33],selected:[20,33]},library:{custom:[33,32],selected:[30,28]},exhibitions:{custom:[25,27],selected:[25,25]},also:{custom:[19,19],selected:[26,28]}},cities:{213:{name:"Москва",lng:37.609281,lat:55.753635,zoom:10},2:{name:"Санкт-Петербург",lng:30.312544,lat:59.935097,zoom:11},43:{name:"Казань",lng:49.113394,lat:55.794411,zoom:13},236:{name:"Набережные Челны",lng:52.402998,lat:55.706989,zoom:11},172:{name:"Уфа",lng:55.924519,lat:54.752853,zoom:11},10:{name:"Орел",lng:36.072731,lat:52.954955,zoom:13},240:{name:"Тольяти",lng:49.426942,lat:53.528384,zoom:12},15:{name:"Тула",lng:37.0514,lat:54.511823,zoom:13},20:{name:"Архангельск",lng:40.201246,lat:64.598684,zoom:9},35:{name:"Краснодар",lng:39.009584,lat:45.040712,zoom:13},47:{name:"Нижний Новгород",lng:43.867484,lat:56.293042,zoom:11},65:{name:"Новосибирск",lng:82.927814,lat:55.039228,zoom:11},39:{name:"Ростов-на-Дону",lng:39.684713,lat:47.249017,zoom:12},11:{name:"Рязань",lng:39.687713,lat:54.606199,zoom:13},51:{name:"Самара",lng:50.190743,lat:53.210533,zoom:13},56:{name:"Челябинск",lng:61.448916,lat:55.186982,zoom:12},54:{name:"Екатеринбург",lng:60.63082,lat:56.823385,zoom:12},973:{name:"Сургут",lng:73.400992,lat:61.257159,zoom:10}},getCategoryName:function(A,C){var B=this.getCategoryType(A);switch(C){case"museums":if(B==1){return"музей"}if(B==2){return"музея"}if(B==3){return"музеев"}break;case"kino":if(B==1){return"кино и театров"}if(B==2){return"кино и театра"}if(B==3){return"кино и театров"}break;case"estate":if(B==1){return"усадьба"}if(B==2){return"усадьбы"}if(B==3){return"усадеб"}break;case"monuments":if(B==1){return"памятник"}if(B==2){return"памятника"}if(B==3){return"памятников"}break;case"library":if(B==1){return"библиотека"}if(B==2){return"библиотеки"}if(B==3){return"библиотек"}break;case"exhibitions":if(B==1){return"выставочный зал"}if(B==2){return"выставочных зала"}if(B==3){return"выставочных залов"}break;case"also":if(B==1){return"место"}if(B==2){return"места"}if(B==3){return"мест"}break}},getCategoryType:function(B){B=B.toString();var A=B.substr(B.length-2,1);if(A==1&&B.length!=1){return 3}else{return this.getTypeByLastDigit(B)}},getTypeByLastDigit:function(A){A=A.toString();var B=A.substr(A.length-1,1);if(B==1){return 1}if(B>1&&B<5){return 2}if(B>4||B==0){return 3}}};y5.loaded("Museums:Constants");Museums.MetroFinder=function(){this.data=metro;this.maxItems=100};Museums.MetroFinder.prototype={process:function(D,A){A=A||this.maxItems;var C=[];var B=y5.String.trim(D.toLowerCase());if(B){this.data.filter(function(E){return(y5.String.startsWith(E[1].toLowerCase(),B))}).forEach(function(E){C.push({id:E[0],value:E[1]})});if(C.length>A){C.length=A}}return{elements:C,tokens:D}}};y5.loaded("Museums:MetroFinder");Museums.AutoComplete=function(A){var B=new Museums.MetroFinder();this.suggest=new y5.Suggest(A,B);y5.on("y5:Suggest:select",function(D,C){y5.fire("Museums:AutoComplete:change",A,D,C)},A,this);y5.on("y5:Suggest:noresult",function(D,C){y5.fire("Museums:AutoComplete:noresult",A,D,C)},A,this);y5.on("y5:Suggest:open",function(){y5.fire("Museums:AutoComplete:open",A)},A,this);y5.on("y5:Suggest:close",function(){y5.fire("Museums:AutoComplete:close",A)},A,this)};y5.require(["Suggest","Museums:MetroFinder"],function(){y5.loaded("Museums:AutoComplete")});Museums.DataHash={categories:{museums:[],kino:[],estate:[],monuments:[],library:[],exhibitions:[],also:[]},addToCategory:function(B,A){this.categories[B].push(A)},getCategory:function(A){A=A||this.getCurrentCategoryId();return this.categories[A]},getCityId:function(){if(!this.cityId){this.cityId=cityid}return this.cityId},getDateId:function(){if(!this.dateId){this.dateId=date}return this.dateId},setCurrentCategoryId:function(A){this.currentCategoryId=A},getCurrentCategoryId:function(){return this.currentCategoryId},getPlace:function(A){var B=this.getCurrentCategoryId();return this.categories[B][A]},addPlacemark:function(A,B){var C=this.getCurrentCategoryId();this.categories[C][B].placemark=A},getPlacemark:function(A){var B=this.getCurrentCategoryId();return this.categories[B][A].placemark},getPlaceNumById:function(C,B){C=y5.String.trim(C)*1;var B=B||this.getCurrentCategoryId();for(var A=0;A<this.categories[B].length;A++){if(this.categories[B][A].id==C){return A}}return },getPlaceById:function(C,B){var A=this.getPlaceNumById(C,B);if(A!=undefined){return this.getPlace(A)}},addToSearchResult:function(A){this.searchResult.push(A)},clearLastSearchResult:function(){this.searchResult=[]},getFoundPlace:function(A){return this.searchResult[A]},getCurrentSearchResult:function(){return this.searchResult}};y5.loaded("Museums:DataHash");Museums.ImageBlock=function(){var A=y5.$("image_block");this.init(A)};Museums.ImageBlock.prototype={init:function(A){this.element=A;this.cityId=Museums.DataHash.getCityId();this.cityBlock=y5.$$(".city-name",this.element)[0];this.placeBlock=y5.$$(".place-name",this.element)[0];this.imgBlock=y5.$$(".image-i",this.element)[0];this.img=y5.$$("img",this.imgBlock)[0];y5.on("Museums:CategorySelected",this.onCategorySelected,document,this);y5.on("click",this.onPlaceNameClick,this.placeBlock,this)},onPlaceNameClick:function(){if(this.currentPictureNum==undefined){alert("Ошибка. Данные для блока отстутствуют");return }var A=this.data[this.currentCategoryId][this.currentPictureNum].num;if(A!=undefined){y5.fire("Museums:ImageBlockClick",document,A,true)}},onCategorySelected:function(A){if(!this.data){this.getImageBlockData();y5.on("Museums:ImageBlockDataLoaded",function(){this.onCategorySelected(A)},document,this,{runOnce:true});return }this.currentCategoryId=A;this.showImageForCategory(A)},showImageForCategory:function(A){if(!this.data[A]){y5.Classes.add(this.element,"g-hidden");alert("Нет данных для блока картинок к категории "+A+", для даты "+date+" города id = "+cityid);return }this.currentPictureNum=Math.round(Math.random()*(this.data[A].length-1));this.img.src="/i/photos/"+this.cityId+"/"+this.data[A][this.currentPictureNum].src;y5.Element.text(this.placeBlock,this.data[A][this.currentPictureNum].name);y5.Classes.remove(this.element,"g-hidden")},getImageBlockData:function(){var B=new y5.Request.XML("/photo.xml");var A=this;B.onload=function(D){var C=D.responseXML;if(C){A.parseResult(C);y5.fire("Museums:ImageBlockDataLoaded",document)}};B.send({cityid:Museums.DataHash.getCityId()})},parseResult:function(N){this.data={};var J=N.getElementsByTagName("item");for(var H=0;H<J.length;H++){var I=J[H].getElementsByTagName("type")[0];var D=J[H].getAttribute("id");var C=J[H].getElementsByTagName("name")[0].firstChild.nodeValue;var B=J[H].getElementsByTagName("img")[0].firstChild.nodeValue;var E=[];for(var G=0;G<I.childNodes.length;G++){var L=I.childNodes[G].nodeName;var A=Museums.Constants.serverTypes[L];if(A){E.push(A)}}if(E.length>0){for(var F=0;F<E.length;F++){var K=Museums.DataHash.getPlaceNumById(D,E[F]);if(K==undefined){continue}var M={id:D,name:C,src:B,num:K};if(!this.data[E[F]]){this.data[E[F]]=[]}this.data[E[F]].push(M)}}}}};y5.require(["Museums:DataHash","Museums:Constants"],function(){y5.loaded("Museums:ImageBlock")});Museums.PagesControl=function(A){var A=y5.$("pages_control");this.init(A)};Museums.PagesControl.prototype={init:function(A){this.element=A;this.backBtn=y5.$$(".back",this.element)[0];this.nextBtn=y5.$$(".next",this.element)[0];this.nextBtnLink=y5.$$("a",this.nextBtn)[0];this.nextBtnText=y5.$$("b",this.nextBtn)[0];this.backBtnLink=y5.$$("a",this.backBtn)[0];this.backBtnText=y5.$$("b",this.backBtn)[0];this.initHandlers();y5.on("Museums:RefreshPagesControl",this.resetParams,document,this)},initHandlers:function(){y5.on("click",this.onBackClick,this.backBtn,this);y5.on("click",this.onNextClick,this.nextBtn,this);y5.Shortcut.down("Ctrl+RIGHT_ARROW",this.onNextClick,document,this);y5.Shortcut.down("Ctrl+LEFT_ARROW",this.onBackClick,document,this)},resetParams:function(A){this.maxPageNum=A;if(this.maxPageNum<=1){y5.Classes.add(this.element,"g-hidden")}else{y5.Classes.remove(this.element,"g-hidden")}var B=(A>0)?1:0;this.setCurrentPage(B)},onNextClick:function(A){A.stopPropagation();A.preventDefault();this.setCurrentPage(this.currentPageNum+1)},setCurrentPage:function(A){if(A>this.maxPageNum||A<=0&&this.maxPageNum!=0){return }if(A==this.maxPageNum&&A!=0){y5.Classes.add(this.nextBtn,"fin");y5.Classes.remove(this.nextBtnText,"g-hidden");y5.Classes.add(this.nextBtnLink,"g-hidden")}else{y5.Classes.remove(this.nextBtn,"fin");y5.Classes.add(this.nextBtnText,"g-hidden");y5.Classes.remove(this.nextBtnLink,"g-hidden")}if(A==1){y5.Classes.add(this.backBtn,"fin");y5.Classes.remove(this.backBtnText,"g-hidden");y5.Classes.add(this.backBtnLink,"g-hidden")}else{y5.Classes.remove(this.backBtn,"fin");y5.Classes.add(this.backBtnText,"g-hidden");y5.Classes.remove(this.backBtnLink,"g-hidden")}this.currentPageNum=A;y5.fire("Museums:PageSwitched",document,this.currentPageNum)},onBackClick:function(A){A.stopPropagation();A.preventDefault();this.setCurrentPage(this.currentPageNum-1)}};y5.loaded("Museums:PagesControl");Museums.CategoriesList=function(){this.element=y5.$("categories_list");this.re=/item\sitem_(.*)\sg-line/;this.init()};Museums.CategoriesList.prototype={init:function(){this.items={};var A=y5.$$("li",this.element),C;this.listeners={};for(var B=0;B<A.length;B++){C=A[B].className.match(this.re)[1];this.items[C]={};this.items[C].item=A[B];this.items[C].arr=y5.$$(".arr",A[B])[0];this.items[C].text=y5.$$("b",A[B])[0];this.items[C].link=y5.$$("a",A[B])[0];y5.on("click",function(D){return function(){this.selectCategory(D)}}(C),A[B],this)}y5.on("Museums:DataLoaded",this.onDataLoaded,document,this)},onDataLoaded:function(B){var C=[];for(var A in Museums.DataHash.categories){if(Museums.DataHash.categories[A].length>0){y5.Classes.remove(this.items[A].item,"g-hidden");C.push(A)}}if(C.indexOf(B)==-1){B=C[0]}this.selectCategory(B)},selectCategory:function(B){var A=Museums.DataHash.getCurrentCategoryId();if(A==B){return }if(A){y5.Classes.add(this.items[A].arr,"g-hidden");y5.Classes.remove(this.items[A].link,"g-hidden");y5.Classes.add(this.items[A].text,"g-hidden")}y5.Classes.remove(this.items[B].arr,"g-hidden");y5.Classes.remove(this.items[B].text,"g-hidden");y5.Classes.add(this.items[B].link,"g-hidden");Museums.DataHash.setCurrentCategoryId(B);y5.fire("Museums:CategorySelected",document,B,A)}};y5.require(["Museums:Constants","Museums:DataHash"],function(){y5.loaded("Museums:CategoriesList")});Museums.PlacesList=function(){var A=y5.$("places_list");this.init(A)};Museums.PlacesList.prototype={init:function(A){this.element=A;this.placesPerPage=Museums.Constants.itemsPerPage;this.eventsPerPage=Museums.Constants.eventsPerPage;this.filter=null;this.eventsListArea=y5.$$(".b-static-text",this.element)[0];this.header=y5.$$(".note",this.element)[0];this.headerText=y5.$$(".note-text",this.header)[0];this.headerLink=y5.$$(".note-link",this.header)[0];this.headerSearch=y5.$$(".note-searh",this.element)[0];this.headerSearchText=y5.$$(".note-text",this.headerSearch)[0];this.headerSearchToMainLink=y5.$$(".to-main-list",this.headerSearch)[0];this.headerSearchToSearchText=y5.$$(".to-search-list",this.headerSearch)[0];this.headerSearchToSearchLink=y5.$$(".to-search-list-link",this.headerSearch)[0];y5.Dom.clearNode(this.eventsListArea);y5.Dom.clearNode(this.headerText);new Museums.PagesControl();y5.on("click",this.backToAllPlacesList,this.headerSearchToMainLink,this);y5.on("click",this.backToFoundPlacesList,this.headerSearchToSearchLink,this);y5.on("Museums:ShowAllPlacesList",this.showAllPlacesList,document,this);y5.on("Museums:PageSwitched",this.setPage,document,this);y5.on("Museums:PlaceSelected",this.getEventsListData,document,this);y5.on("Museums:ImageBlockClick",this.getEventsListData,document,this);y5.on("Museums:onObjectsFound",this.showFoundPlacesList,document,this)},showFoundPlacesList:function(){this.currentList=Museums.DataHash.getCurrentSearchResult();this.currentPagesNum=Math.ceil(this.currentList.length/this.placesPerPage);this.listMode="search";y5.Classes.add(this.header,"g-hidden");y5.Classes.remove(this.headerSearch,"g-hidden");this.setSearchHeader(this.currentList.length);this.showPlacesListArea()},showAllPlacesList:function(){this.currentList=Museums.DataHash.getCategory(Museums.DataHash.getCurrentCategoryId());this.currentPagesNum=Math.ceil(this.currentList.length/this.placesPerPage);this.setHeader("main");this.listMode="main";y5.Classes.remove(this.header,"g-hidden");y5.Classes.add(this.headerSearch,"g-hidden");this.showPlacesListArea();y5.fire("Museums:ShowCategoriesList",document,this)},backToAllPlacesList:function(){y5.fire("Museums:ClearSearchForm",document,this);this.showAllPlacesList()},backToFoundPlacesList:function(){this.showFoundPlacesList()},onEventsListDataLoaded:function(){this.showEventsListArea()},parseEventsListData:function(O){this.eventsData=null;var J=O.getElementsByTagName("museum")[0];var A=J.getElementsByTagName("name")[0].firstChild.nodeValue;var C=J.getElementsByTagName("person-name")[0];var G=(C)?C.firstChild.nodeValue:null;var F=J.getElementsByTagName("phone")[0];var H=(F)?F.firstChild.nodeValue:null;var B=J.getElementsByTagName("address")[0];var L=(B)?B.firstChild.nodeValue:null;var N=J.getElementsByTagName("event");this.eventPages={};this.eventPages.length=0;var M=0;var I=1;if(N){this.eventsData={name:A,personName:G,phone:H,address:L,events:[]};for(var E=0;E<N.length;E++){var D=this.parseEventData(N[E]);var K=Math.min(this.eventsPerPage,Math.ceil(D.description.length/250));if(M+K>this.eventsPerPage){I+=1;M=K}else{M+=K}if(!this.eventPages[I]){this.eventPages[I]={start:E,stop:E-1};this.eventPages.length+=1}this.eventPages[I].stop+=1;this.eventsData.events.push(D)}}},parseEventData:function(D){var F=D.getElementsByTagName("title")[0];var E=(F)?F.firstChild.nodeValue:null;var C=D.getElementsByTagName("para");var B="";for(var A=0;A<C.length;A++){B+=C[A].firstChild.nodeValue+"<br>"}return{title:E,description:B}},showPlacesListArea:function(){this.currentType="list";y5.Classes.remove(this.element,"b-found_topic");y5.Classes.add(this.eventsListArea,"g-hidden");y5.Classes.remove(this.headerText,"g-hidden");y5.Classes.add(this.headerLink,"g-hidden");y5.Classes.remove(this.headerSearchToSearchText,"g-hidden");y5.Classes.add(this.headerSearchToSearchLink,"g-hidden");if(this.onHeaderClick){this.onHeaderClick.disable()}var A=(this.listMode=="search");y5.fire("Museums:RefreshMap",document,A);y5.fire("Museums:RefreshPagesControl",document,this.currentPagesNum)},showEventsListArea:function(){y5.Classes.add(this.element,"b-found_topic");y5.Dom.removeChild(this.placesListArea);y5.Classes.remove(this.eventsListArea,"g-hidden");y5.Classes.add(this.headerText,"g-hidden");y5.Classes.remove(this.headerLink,"g-hidden");this.currentType="events";if(!this.onHeaderClick){this.onHeaderClick=y5.on("click",this.showAllPlacesList,this.header,this)}else{this.onHeaderClick.enable()}y5.Classes.add(this.headerSearchToSearchText,"g-hidden");y5.Classes.remove(this.headerSearchToSearchLink,"g-hidden");y5.fire("Museums:RefreshPagesControl",document,this.eventPages.length)},getEventsListData:function(E,F){if(F){this.showAllPlacesList();y5.fire("Museums:ImageBlockHandled",document,E)}if(this.listMode=="search"){var B=Museums.DataHash.getFoundPlace(E).id}else{if(this.listMode=="main"){var B=Museums.DataHash.getPlace(E).id}else{alert("Error listMode = "+this.listMode);return }}var G=Museums.DataHash.getCityId();var D=Museums.DataHash.getDateId();var C=new y5.Request.XML("/"+G+".xml");var A=this;C.onload=function(I){var H=I.responseXML;if(H){A.parseEventsListData(H);A.onEventsListDataLoaded()}};C.send({date:D,id:B})},setSearchHeader:function(A){var B=Museums.Constants.getCategoryName(A,Museums.DataHash.getCurrentCategoryId());y5.Element.html(this.headerSearchToSearchLink,this.currentList.length*1);y5.Element.html(this.headerSearchToSearchText,this.currentList.length*1);y5.Element.html(this.headerSearchText,B);y5.Element.html(this.headerSearchToMainLink,Museums.DataHash.getCategory().length*1)},setHeader:function(){var A=this.currentList.length;if(A==0){var C="Ничего не найдено"}else{var B=Museums.Constants.getCategoryName(A,Museums.DataHash.getCurrentCategoryId());var C="Найдено: "+A+" "+B}y5.Element.html(this.headerText,C);y5.Element.html(this.headerLink,C);y5.Classes.remove(this.headerLink,"g-hidden");y5.Classes.add(this.headerText,"g-hidden")},setPage:function(A){if(this.placesListArea){y5.Dom.removeChild(this.placesListArea)}if(A==0){return }if(this.currentType=="list"){this.setPlacesListPage(A)}else{this.setEventsListPage(A)}},setPlacesListPage:function(C){this.placesListArea=y5.Element.create("ol",{"class":"results"});y5.Dom.insertAfter(this.placesListArea,this.headerSearch);var D=(C-1)*this.placesPerPage+1,A=Math.min(C*this.placesPerPage,this.currentList.length);y5.Element.attributes(this.placesListArea,"start",D);for(var B=D;B<=A;B++){this.addPlace(this.currentList[B-1],B-1)}},setEventsListPage:function(C){y5.Dom.clearNode(this.eventsListArea);var D=this.eventPages[C].start;var A=this.eventPages[C].stop;if(this.eventsData.name){this.eventsListArea.appendChild(y5.Element.create("h4",{},this.eventsData.name))}if(this.eventsData.address){this.eventsListArea.appendChild(y5.Element.create("p",{},this.eventsData.address))}if(this.eventsData.phone){this.eventsListArea.appendChild(y5.Element.create("p",{},this.eventsData.phone))}if(this.eventsData.personName){this.eventsListArea.appendChild(y5.Element.create("p",{},"Запись: <strong>"+this.eventsData.personName+"</strong>"))}for(var B=D;B<=A;B++){this.addEventsListPart(this.eventsData.events[B])}},addEventsListPart:function(B){var A=y5.Element.create("p",{},B.title+"<br>"+B.description);this.eventsListArea.appendChild(A)},addPlace:function(B,C){var A=y5.Element.create("li",{},'<a href="#">'+B.name+"</a>");this.placesListArea.appendChild(A);y5.on("click",function(){y5.fire("Museums:onPlaceClick",document,C)},A,this)}};y5.require(["Museums:Constants","Museums:PagesControl","Museums:DataHash"],function(){y5.loaded("Museums:PlacesList")});Museums.MapViewer=function(){var A=y5.$("map_viewer");this.init(A)};Museums.MapViewer.prototype={init:function(B){this.element=B;this.map=new YMaps.Map(this.element);this.map.addControl(new YMaps.Zoom());this.map.enableScrollZoom();var A=new YMaps.TypeControl();this.map.addControl(A);this.currentCity=Museums.Constants.cities[Museums.DataHash.getCityId()];this.currentPlacemarkNum=null;this.center=new YMaps.GeoPoint(this.currentCity.lng,this.currentCity.lat);this.setMapStyles();y5.on("Museums:ShowCategoriesList",this.onCategorySelected,document,this);y5.on(["Museums:PlaceSelected","Museums:ImageBlockHandled"],this.selectPlacemark,document,this);y5.on("Museums:SearchTextEnter",this.searchPlace,document,this);y5.on("Museums:RefreshMap",this.refreshMap,document,this);y5.on("Museums:onTextFound",this.onTextFound,document,this)},onCategorySelected:function(){var C=Museums.DataHash.getCategory(Museums.DataHash.getCurrentCategoryId());this.clearMap();for(var B=0;B<C.length;B++){var A=this.createPlacemark(C[B],B);Museums.DataHash.addPlacemark(A,B);this.placemarks.push(A);this.map.addOverlay(A)}},refreshMap:function(C){var A=(C&&this.foundCenter)?this.foundCenter:this.center;var B=(C&&this.foundZoom)?this.foundZoom:this.currentCity.zoom;this.map.setCenter(A,B);this.deselectPlacemark(this.currentPlacemarkNum)},setDefaultMapParams:function(){this.map.setCenter(this.center,this.currentCity.zoom)},clearMap:function(){this.currentPlacemarkNum=null;this.placemarks=[];this.map.removeAllOverlays()},searchPlace:function(B){var A=new YMaps.Geocoder(B);YMaps.Events.observe(A,A.Events.Load,function(){if(A.length()){this.onPlaceFound(A)}else{this.clearMap();y5.fire("Museums:onObjectsFound",document)}},this);YMaps.Events.observe(A,A.Events.Fault,function(C){alert("Произошла ошибка: "+C.message)})},onPlaceFound:function(A){var D=A._objects.length;for(var C=0;C<D;C++){var B=A._objects[C];if(B.kind=="metro"||B.kind=="street"){this.onMetroFound(B);return }if(B.kind=="house"){this.onAddressFound(B);return }}this.clearMap();y5.fire("Museums:onObjectsFound",document)},onTextFound:function(B){if(!B){return }this.clearMap();var A=Museums.DataHash.getCurrentSearchResult();for(var C=0;C<A.length;C++){var E=A[C];var D=this.createPlacemark(E,C);this.placemarks.push(D);this.map.addOverlay(D)}this.foundZoom=null;this.foundCenter=null;y5.fire("Museums:onObjectsFound",document)},onMetroFound:function(D){var J=D.getGeoPoint(),G=[];this.map.setCenter(J,14);this.foundCenter=J;this.foundZoom=14;this.clearMap();var K=Museums.DataHash.getCategory();var H=0.001;var A=this.map.getBounds();var I=new YMaps.GeoPoint(A.getLeft(),A.getBottom()+H);var C=new YMaps.GeoPoint(A.getRight()+H,A.getTop()-H);var B=new YMaps.GeoBounds(I,C);for(var E=0;E<K.length;E++){var J=(K[E].placemark)?K[E].placemark.getGeoPoint():new YMaps.GeoPoint(K[E].lng,K[E].lat);if(B.contains(J)){var L=Museums.DataHash.getPlace(E);Museums.DataHash.addToSearchResult(L);var F=this.createPlacemark(L,Museums.DataHash.getCurrentSearchResult().length-1);this.placemarks.push(F);this.map.addOverlay(F)}}y5.fire("Museums:onObjectsFound",document)},onAddressFound:function(B){var A=B.getGeoPoint();this.clearMap();this.foundCenter=A;this.foundZoom=14;var C=A.getLng(),G=A.getLat(),F=Museums.DataHash.getCategory();for(var E=0;E<F.length;E++){if(F[E].lng==C&&F[E].lat==G){Museums.DataHash.addToSearchResult(F[E]);var D=this.createPlacemark(F[E],Museums.DataHash.getCurrentSearchResult().length-1);this.placemarks.push(D);this.map.addOverlay(D)}}y5.fire("Museums:onObjectsFound",document)},createPlacemark:function(E,D){var A=new YMaps.GeoPoint(E.lng,E.lat);var C=this.getCustomPointStyle();var B=new YMaps.Placemark(A,{style:C,hasBalloon:false});YMaps.Events.observe(B,B.Events.Click,function(){y5.fire("Museums:onPlacemarkClick",document,D)},this);B.placeId=E.id;B.numInList=D+1;return B},selectPlacemark:function(B){var A=this.placemarks[B];this.deselectPlacemark(this.currentPlacemarkNum);A.setOptions({style:this.getSelectedPointStyle()});this.map.setCenter(A.getGeoPoint(),this.zoom);this.currentPlacemarkNum=B},deselectPlacemark:function(B){if(B==null){return }var A=this.placemarks[B];if(A){A.setOptions({style:this.getCustomPointStyle()})}},getCustomPointStyle:function(){return Museums.DataHash.getCurrentCategoryId()+"#customPoint"},getSelectedPointStyle:function(){return Museums.DataHash.getCurrentCategoryId()+"#selectedPoint"},setMapStyles:function(){for(var E=0;E<Museums.Constants.categories.length;E++){var H=Museums.Constants.categories[E];var D=new YMaps.Style();var B=new YMaps.Style();D.iconStyle=new YMaps.IconStyle(H+"#customPointIcon");B.iconStyle=new YMaps.IconStyle(H+"#selectedPointIcon");var G=Museums.Constants.categoriesIconSize[H].custom;var F=Museums.Constants.categoriesIconSize[H].selected;D.iconStyle.offset=new YMaps.Point(-G[0],-G[1]);B.iconStyle.offset=new YMaps.Point(-F[0],-F[1]);D.iconStyle.href="/i/"+H+".png";B.iconStyle.href="/i/"+H+"-selected.png";D.iconStyle.size=new YMaps.Point(G[0],G[1]);B.iconStyle.size=new YMaps.Point(F[0],F[1]);YMaps.Styles.add(H+"#customPoint",D);YMaps.Styles.add(H+"#selectedPoint",B);var A=new YMaps.Template();var C=new YMaps.Template();A.text='<div class=\'CustomPointDot\'><img style="height:$[style.iconStyle.size.y];width:$[style.iconStyle.size.x];" src="$[style.iconStyle.href]"/><div class="PointNum">$[numInList|0]</div></div>';C.text='<div class=\'SelectedPointDot\'><img style="height:$[style.iconStyle.size.y];width:$[style.iconStyle.size.x];" src="$[style.iconStyle.href]"/><div class="PointNum">$[numInList|0]</div></div>';YMaps.Templates.add(H+"#customPointIcon",A);YMaps.Templates.add(H+"#selectedPointIcon",C)}}};y5.require(["Museums:Constants","Museums:DataHash"],function(){y5.loaded("Museums:MapViewer")});Museums.SearchForm=function(){var A=y5.$("search_form");this.init(A)};Museums.SearchForm.prototype={init:function(A){this.element=A;this.input=y5.$("search");this.button=y5.$$("input[type=button]",this.element)[0];y5.on("click",this.search,this.button,this);y5.Shortcut.press("Enter",this.search,this.input,this,{checkTarget:false});y5.on("Museums:CategorySelected",this.trySeacrh,document,this);new Museums.AutoComplete(this.input);y5.on(["Museums:ClearSearchForm","Museums:ImageBlockClick"],this.clearForm,document,this);y5.on(["Museums:AutoComplete:change"],function(B,C){this.metroSelected=C},this.input,this)},clearForm:function(){this.input.value="";this.input.focus();this.input.blur()},trySeacrh:function(){if(this.input.value!=""){this.search()}else{y5.fire("Museums:ShowAllPlacesList",document)}},search:function(B,G){Museums.DataHash.clearLastSearchResult();var E=Museums.DataHash.getCityId();var D=Museums.Constants.cities[E].name;var H=this.input.value;var C=Museums.DataHash.getCurrentCategoryId();var A=Museums.Constants.toServerTypes[C];if(this.metroSelected==H){H=D+", метро "+H;y5.fire("Museums:SearchTextEnter",document,H)}else{var F=new y5.Request.XML("proxy.xml");var I=this;F.onload=function(K){I.parseResult(K,H)};var J=H+' << type_id="'+A+'"<<city_id="'+E+'"';J=encodeURI(J);F.send({text:J})}},parseResult:function(I,H){var F=I.responseXML;var A=F.getElementsByTagName("muzei_id");if(A.length>0){for(var E=0;E<A.length;E++){var B=A[E].firstChild.nodeValue;var C=Museums.DataHash.getPlaceById(B);if(C!=undefined){Museums.DataHash.addToSearchResult(C)}y5.fire("Museums:onTextFound",document,true)}}else{var G=Museums.DataHash.getCityId();var D=Museums.Constants.cities[G].name;H=D+", "+H;y5.fire("Museums:SearchTextEnter",document,H)}}};y5.require(["Museums:AutoComplete","Museums:DataHash","Museums:Constants"],function(){y5.loaded("Museums:SearchForm")});Museums.PageLayout=function(A){this.element=A;this.cityId=Museums.DataHash.getCityId();this.dateId=Museums.DataHash.getDateId();this.menu=y5.$$(".menu",this.element)[0];this.mapArea=y5.$$(".b-map",this.element)[0];this.searchPlace=y5.$$(".b-search-place",this.element)[0];this.cityArea=y5.$$(".b-city",this.element)[0];this.infoArea=y5.$$(".b-info")[0];this.toMayLink=y5.$$(".may a.day")[0];this.toNightLink=y5.$$(".may a.night")[0];new Museums.CategoriesList();new Museums.PlacesList();new Museums.ImageBlock();new Museums.MapViewer();new Museums.SearchForm();this.toAprilLink=y5.$$(".april a")[0];this.init()};Museums.PageLayout.prototype={init:function(){y5.on("Museums:CategorySelected",this.switchCategory,document,this);y5.on(["Museums:onPlacemarkClick","Museums:onPlaceClick"],function(A){y5.fire("Museums:PlaceSelected",document,A)},document);this.loadData()},loadData:function(){var B=new y5.Request.XML("/"+this.cityId+".xml");var A=this;B.onload=function(D){var C=D.responseXML;var F="";if(C){A.parseResult(C);var E=catid||"museums";y5.fire("Museums:DataLoaded",document,E)}};B.onerror=function(){var C=catid||"museums";y5.fire("Museums:DataLoaded",document,C)};B.send({date:this.dateId})},switchCategory:function(C,B){if(B){y5.Classes.remove(this.menu,"menu_"+B);y5.Classes.remove(this.mapArea,"b-map_"+B);y5.Classes.remove(this.searchPlace,"b-search-place_"+B);y5.Classes.remove(this.cityArea,"b-city_"+B);y5.Classes.remove(this.infoArea,"b-info_"+B)}if(this.toMayLink){var A=new y5.Url(this.toMayLink.href);A.set({catid:C});this.toMayLink.href=A}if(this.toNightLink){var A=new y5.Url(this.toNightLink.href);A.set({catid:C});this.toNightLink.href=A}if(this.toAprilLink){var A=new y5.Url(this.toAprilLink.href);A.set({catid:C});this.toAprilLink.href=A}y5.Classes.add(this.menu,"menu_"+C);y5.Classes.add(this.mapArea,"b-map_"+C);y5.Classes.add(this.searchPlace,"b-search-place_"+C);y5.Classes.add(this.cityArea,"b-city_"+C);y5.Classes.add(this.infoArea,"b-info_"+C)},parseResult:function(N){var E=N.getElementsByTagName("museum");for(var G=0;G<E.length;G++){var H=E[G].getElementsByTagName("type")[0];var D=E[G].getElementsByTagName("longitude")[0];var L=(D)?D.firstChild.nodeValue:0;var K=E[G].getElementsByTagName("latitude")[0];var J=(K)?K.firstChild.nodeValue:0;var B=E[G].getElementsByTagName("name")[0];var C=B.firstChild.nodeValue;var M={id:E[G].getAttribute("id"),lng:L,lat:J,name:C};if(!H){continue}for(var F=0;F<H.childNodes.length;F++){var I=H.childNodes[F].nodeName;var A=Museums.Constants.serverTypes[I];if(A){Museums.DataHash.addToCategory(A,M)}}}}};y5.require(["Museums:Constants","Museums:PagesControl","Museums:PlacesList","Museums:MapViewer","Museums:ImageBlock","Museums:SearchForm","Museums:CategoriesList"],function(){y5.loaded("Museums:PageLayout")});