OpenMap={overlays:{stop:[],checkpoint:[],building:[]},showVisibilityRect:function(B,A){this.removeVisibilityRect();this.visibilityRectHalfa=A;this.visibilityRectCenter=B;this.visibilityRectCoords=[new GLatLng(B.lat()-A/2,B.lng()-A),new GLatLng(B.lat()-A/2,B.lng()+A),new GLatLng(B.lat()+A/2,B.lng()+A),new GLatLng(B.lat()+A/2,B.lng()-A),new GLatLng(B.lat()-A/2,B.lng()-A)];this.visibilityRect=new GPolygon(this.visibilityRectCoords,"#abc837",3,0.5,"#abc837",0.2);this.addOverlay(this.visibilityRect)},removeVisibilityRect:function(){if($defined(this.visibilityRect)){this.removeOverlay(this.visibilityRect);this.visibilityRect.remove();return true}return false},getVisibilityRectBounds:function(){if($defined(this.visibilityRect)){return this.visibilityRect.getBounds()}return false},getBoundsJson:function(){var A=this.getBounds();return{latmin:A.getSouthWest().lat(),latmax:A.getNorthEast().lat(),lngmin:A.getSouthWest().lng(),lngmax:A.getNorthEast().lng()}},getVisibilityRectBoundsJson:function(){var A=this.getVisibilityRectBounds();return{latmin:A.getSouthWest().lat(),latmax:A.getNorthEast().lat(),lngmin:A.getSouthWest().lng(),lngmax:A.getNorthEast().lng()}},addMarkerOverlay:function(A){this.overlays[A.type].push(A);this.addOverlay(A)},loadMarkers:function(B,C,A){jsonrequest({url:"/map/getmarkersandwindows/view/",onComplete:function(D){D.each(function(G){var E=new GLatLng(G.ll.lat,G.ll.lng);var F=MarkerFactory(E,B,{id:G.id});open_map.addMarkerOverlay(F);if($defined(G.infowindow)){F.installInfoWindow(G.infowindow)}if($defined(A)&&A){open_map.setCenter(E)}})}},{ids:C,type:B})},flashBuilding:function(B,A){this.cleanOverlays("building");this.loadMarkers("building",[B],A)},cleanOverlays:function(A){this.overlays[A].each(function(B){this.removeOverlay(B);B.remove()},this);this.overlays[A]=[]},removeMarkerOverlay:function(A){this.overlays[A.type].erase(A);this.removeOverlay(A)},showMarkerInfoWindow:function(A,B){this.overlays[A].each(function(C){if(C.id==B){C.loadInfoWindow()}})},image2marker:function(B,A){drop=$("map");B.setStyle("background","url(/media/imgs/geo/map/markers/"+A+".png) no-repeat");B.addEvent("mousedown",function(D){D=new Event(D).stop();var E=this.clone().setStyles(this.getCoordinates()).setStyles({opacity:0.7,position:"absolute"}).addEvent("emptydrop",function(){this.destroy()}).inject(document.body);var C=E.makeDraggable({droppables:[drop],onComplete:function(){this.element.destroy()},onDrop:function(J,H){if(H){var G=J.getPosition().x-drop.getPosition().x;var F=J.getPosition().y-drop.getPosition().y;var I=ControlPanel.manager.map.fromContainerPixelToLatLng(new GPoint(G,F));marker=MarkerFactory(I,A,{draggable:true});marker.getIcon();ControlPanel.manager.map.afterDropCorrection(marker);ControlPanel.manager.markerDropped(marker)}else{J.fireEvent("emptydrop")}}});C.start(D)})},afterDropCorrection:function(A){var C=A.getIcon().iconAnchor;var E=this.fromDivPixelToLatLng(new GPoint(0,0));var D=this.fromDivPixelToLatLng(C);var B=A.getLatLng().lat()+(D.lat()-E.lat());var F=A.getLatLng().lng()+(D.lng()-E.lng());A.setLatLng(new GLatLng(B,F))},getMarkerByInfoWindow:function(A,B){for(var C=0;C<B.length;C++){if(B[C].getLatLng()==A.getPoint()){return B[C]}}}};function mapify(A){$extend(A,OpenMap)}function submitFastSearch(){var A=$("fastsearch_query").value;jsonrequest({url:"/zdaniya/fastsearch/",onRequest:function(){$("fast_search_results").display("none");$("fastsearch_query").addClass("fastsearch_spinner")},onComplete:function(B){$("fastsearch_query").removeClass("fastsearch_spinner");if(!$defined(B.bingo)){$("fast_search_results").display("block");$("fast_search_results").set("html",B.html)}else{open_map.flashBuilding(B.bingo)}}},{query:A});return false}function markerise(A){A.highlighted=false;A.updateInfoWindow=function(B){A.openInfoWindowHtml(B)};A.switchLight=function(){if(!A.highlighted){A.highlight()}else{A.turnoff()}};A.highlight=function(){A.setImage(A.iconSet.highlight.image);A.highlighted=true};A.turnoff=function(){A.setImage(A.iconSet.normal.image);A.highlighted=false};A.loadInfoWindow=function(){wainting_for_window=A;jsonpost({url:"/geo/map/infowindows/view/"+this.type+"/",onComplete:function(B){wainting_for_window.installInfoWindow(B)}},{id:this.id})};A.installInfoWindow=function(B){if(B.length==1){this.openInfoWindow(B[0].content,{maxWidth:300})}else{var C=[];B.each(function(D){C.push(new GInfoWindowTab(D.label,D.content))});this.openInfoWindowTabs(C,{maxWidth:300})}};return A}function MarkerFactory(E,B,D){D=(D==null)?{}:D;var C;if(B=="checkpoint"){C=CPIconSet}else{if(B=="stop"){C=SIconSet}else{if(B=="start"){C=StartIconSet}else{if(B=="finish"){C=FinishIconSet}else{if(B=="building"){C=BuildingIconSet}else{C=baseIconSet}}}}}D.icon=C.normal;var A=new GMarker(E,D);$extend(A,D);A.type=B;A.iconSet=C;return markerise(A)}baseIcon=new GIcon();baseIcon.image="/media/imgs/geo/map/markers/marker.png";baseIcon.shadow="/media/imgs/geo/map/markers/shadow.png";baseIcon.iconSize=new GSize(20,34);baseIcon.shadowSize=new GSize(37,34);baseIcon.iconAnchor=new GPoint(9,32);baseIcon.infoWindowAnchor=new GPoint(9,2);baseIcon.infoShadowAnchor=new GPoint(18,25);baseIconSet={normal:baseIcon,highlight:baseIcon};SIconSet={normal:new GIcon(baseIcon,"/media/imgs/geo/map/markers/stop.png"),highlight:new GIcon(baseIcon,"/media/imgs/geo/map/markers/stop_highlighted.png")};CPIconSet={normal:new GIcon(baseIcon,"/media/imgs/geo/map/markers/checkpoint.png"),highlight:new GIcon(baseIcon,"/media/imgs/geo/map/markers/checkpoint_highlighted.png")};BuildingIconSet={normal:new GIcon(baseIcon,"/media/imgs/geo/map/markers/building.png"),highlight:new GIcon(baseIcon,"/media/imgs/geo/map/markers/building.png")};StartIconSet={normal:new GIcon(baseIcon,"/media/imgs/geo/map/markers/start.png"),highlight:new GIcon(baseIcon,"/media/imgs/geo/map/markers/start.png")};FinishIconSet={normal:new GIcon(baseIcon,"/media/imgs/geo/map/markers/finish.png"),highlight:new GIcon(baseIcon,"/media/imgs/geo/map/markers/finish.png")};function MapCP(){this.manager=new FooOperator();this.changeManager=function(A){this.manager.__del__();this.manager=new A(open_map);this.manager.__init__()};this.install=function(A){$("map_panel").set("html",A)};this.installActions=function(A){$("map_panel_actions").set("html",A);update_corners()};this.setErrors=function(A){$("map_panel_errors").setStyle("display","block").set("html",A.join("<br />"))};this.cleanErrors=function(){$("map_panel_errors").setStyle("display","none").set("html","")}}function FooOperator(){this.__init__=function(){var A=1};this.__del__=function(){var A=0}}ControlPanel=new MapCP();searchRouteManager=new Class({initialize:function(A){this.map=A;this.searchMarkers={start:new GMarker(new GLatLng(0,0)),finish:new GMarker(new GLatLng(0,0))};this.showing=[]},__init__:function(){this.installActions()},__del__:function(){},cleanObjects:function(A){},markerDropped:function(A){this.searchMarkers[A.type].remove();this.searchMarkers[A.type]=A;this.map.addOverlay(A)},installActions:function(){$$(".marker_emulator").each(function(E){open_map.image2marker(E,E.id.substring("marker_".length))},this);if(START_POINT){var D=new GLatLng(START_POINT[0],START_POINT[1]);var A=MarkerFactory(D,"start",{draggable:true});this.markerDropped(A);$("start_holder").display("none");$("start_selected").display("block");this.map.setCenter(D)}if(END_POINT){var C=new GLatLng(END_POINT[0],END_POINT[1]);var B=MarkerFactory(C,"finish",{draggable:true});this.markerDropped(B);$("finish_holder").display("none");$("finish_selected").display("block");this.map.setCenter(C)}if(START_POINT&&END_POINT){this.searchRequest()}},searchRequest:function(){var B={};if(this.searchMarkers.start.getLatLng().lat()!=0&&this.searchMarkers.finish.getLatLng().lat()!=0){B.startpoint={lat:this.searchMarkers.start.getLatLng().lat(),lng:this.searchMarkers.start.getLatLng().lng()};B.endpoint={lat:this.searchMarkers.finish.getLatLng().lat(),lng:this.searchMarkers.finish.getLatLng().lng()}}else{alert("?????????????? ???????????????? ?????????????????? ?? ???????????????? ?????????? ????????????????. \n ?????? ?????????? ??????????????, ?????????????????? ?????????? ?????????????????? ?? ???????????? ?????????? ???? ??????????.");return false}["bus","trolley","micro"].each(function(C){B[C]=$("search_for_"+C).checked});B.transfer=$("agree_for_transfer").checked;var A={url:"/searchpublicroute/",onRequest:function(){$("route_search_results_wrapper").setStyle("display","block");$("route_search_results").set("html",loader)},onComplete:function(C){ControlPanel.manager.installResultsData(C.data);$("route_search_results").set("html",C.html);try{ControlPanel.manager.showSearchResult("0")}catch(D){}}};this.cleanShowing();jsonrequest(A,B)},installResultsData:function(A){this.resultData=A},showSearchResult:function(A){this.activateCard(A);this.cleanShowing();this.nowShowing=A;this.resultData[A].each(function(C){this.showing.push({stops:[],polyline:new GPolyline([])});C.stops.each(function(D){this.showPartStop(D,this.showing.getLast())},this);var B=[];C.checkpoints.each(function(D){B.push(new GLatLng(D.lat,D.lng))},this);this.showPartPolyline(B,this.showing.getLast())},this)},deactivateCard:function(){var A=$("viewed_result");if(A.getChildren().length>0){card=A.getChildren()[0];var D=card.get("id").substr(4).toInt();var C=$("other_results").getChildren();var B=false;C.each(function(F){var E=F.get("id").substr(4).toInt();if(D<E&&!B){card.inject(F,"before");B=true}});if(!B){card.inject($("other_results"))}card.getElements(".showonmap")[0].removeClass("showonmap_active");card.getElements(".can_click").each(function(E){E.removeClass("samepage").addClass("clickable")})}},activateCard:function(C){this.deactivateCard();var A=$("viewed_result");var B=$("rsr_"+C);B.inject(A,"top");A.getElements(".showonmap").each(function(D){D.removeClass("showonmap_active")});A.getElements(".can_click").each(function(D){D.removeClass("samepage").removeClass("clickable")});B.getElements(".showonmap")[0].addClass("showonmap_active");B.getElements(".can_click").each(function(D){D.addClass("samepage").addClass("clickable")})},cleanShowing:function(){this.showing.each(function(A){A.stops.each(function(B){this.map.removeOverlay(B);B.remove();delete B},this);this.map.removeOverlay(A.polyline);A.polyline.remove();delete A.polyline;delete A},this);this.showing=[]},showPartPolyline:function(B,A){A.polyline=new GPolyline(B);this.map.addOverlay(A.polyline)},showPartStop:function(C,B){var A=MarkerFactory(new GLatLng(C.lat,C.lng),"stop",{id:C.id});GEvent.addListener(A,"click",function(){this.loadInfoWindow()});B.stops.push(A);this.map.addOverlay(A)},showStopPrefs:function(A,B){if(A==this.nowShowing){this.showing.each(function(C){C.stops.each(function(D){if(D.id==B){this.map.setCenter(D.getLatLng());D.loadInfoWindow()}},this)},this)}},highlightPolyline:function(A,B){if(A==this.nowShowing){this.showing.each(function(C,D){if(D==B){C.polyline.setStrokeStyle({weight:8})}else{C.polyline.setStrokeStyle({weight:5})}})}}});window.addEvent("domready",function(){map_init();ControlPanel.changeManager(searchRouteManager)});
