function theCragMap(a){this.params={maxClusterRadius:20,loadFov:100,labelFov:200};var d=this;this.options=a;this.debug=!!a.debug;this.map=L.map(a.el,{zoomSnap:L.Browser.mobile?0:1,inertiaDeceleration:1E3,thecragmap:this,zoomControl:false,gestureHandling:this.options.embed});this.styles={fence:{base:{weight:1,color:"#fff",opacity:0.5,fillColor:"#fff",fillOpacity:0.1,className:" tcm-f-base"},region:{weight:1,color:"#fff0",fillOpacity:0,className:" tcm-f-region"},closed:{weight:2,opacity:1,color:"#f00", fillColor:"#f00",fillOpacity:0.1,className:" tcm-f-closed"},here:{weight:1,opacity:1,fillOpacity:0},inside:{weight:1,opacity:1,fillOpacity:0},hover:{color:"#08c",opacity:1,fillColor:"#def",fillOpacity:0.2,weight:2},selected:{color:"#08c",opacity:1,fillColor:"#def",fillOpacity:0.2,weight:2}}};this.panes={labels:this.map.createPane("labelPane"),locate:this.map.createPane("locatePane")};this.map.getPane("labelPane").style.zIndex=640;this.map.getPane("locatePane").style.zIndex=650;this.layerGroups={bbox:L.layerGroup(), number:L.layerGroup(),probe:L.layerGroup(),label:L.layerGroup({pane:"labelPane"}).addTo(this.map),fence:L.layerGroup().addTo(this.map),pie:L.markerClusterGroup({showCoverageOnHover:false,maxClusterRadius:this.params.maxClusterRadius,singleMarkerMode:true,zoomToBoundsOnClick:false,iconCreateFunction:this.renderGearPieFromMarkers,chunkedLoading:true,chunkInterval:50}).addTo(this.map),locate:L.layerGroup({pane:"locatePane"}).addTo(this.map)};this.newPies=[];this.controls={};L.control.zoom({position:"bottomright", zoomInTitle:thecrag.getText("template.maps.zoomin"),zoomOutTitle:thecrag.getText("template.maps.zoomout")}).addTo(this.map);this.initProviders();this.autoLayer=null;this.selectedLayer="auto";this.controls.layers=L.control.layers({},{},{collapsed:this.options.embed?1:L.Browser.mobile?1:0,position:"topleft"}).addTo(this.map);this.controls.layers.addOverlay(this.layerGroups.fence,thecrag.getTextUC("object.boundary.many"));this.controls.layers.addOverlay(this.layerGroups.pie,thecrag.getTextUC("object.route.many")); this.controls.layers.addOverlay(this.layerGroups.label,thecrag.getTextUC("object.label.many"));if(this.debug){this.controls.layers.addOverlay(this.layerGroups.bbox,"nbbox");this.controls.layers.addOverlay(this.layerGroups.number,"number");this.controls.layers.addOverlay(this.layerGroups.probe,"probe")}L.control.scale().addTo(this.map);if(document.fullscreenEnabled||document.webkitFullscreenEnabled)this.map.addControl(new L.Control.Fullscreen({position:"bottomright",title:{"false":thecrag.getText("template.maps.fullscreen"), "true":thecrag.getText("template.maps.exitfullscreen")}}));this.controls.locate=L.control.locate({icon:"icon-location-arrow",position:"bottomright",setView:"untilPan",layer:this.layerGroups.locate,circlePadding:[50,50],cacheLocation:true,returnToPrevBounds:false,compassStyle:{weight:1,radius:7},strings:{title:thecrag.getText("template.maps.your-location")},locateOptions:{enableHighAccuracy:true,maxZoom:20}}).addTo(this.map);this.map.on("moveend",function(){this.loadMap();var b=this;window.setTimeout(function(){b.updateLayerControl()}, 20)},this);if(this.options.embed){L.Control.LinkControl=L.Control.extend({options:{position:"topright",label:"button",href:"#"},onAdd:function(){var b=L.DomUtil.create("div","leaflet-bar leaflet-control leaflet-control-editnode");this.link=L.DomUtil.create("a","leaflet-control-edit-button leaflet-bar-part",b);this.link.href=this.options.href;this.link.style.padding="0 8px";this.link.style.width="auto";this.link.innerHTML=this.options.label;return b}});this.controls.edit=(new L.Control.LinkControl({href:this.options.edit, label:thecrag.getText("template.maps.edit-location")})).addTo(this.map)}this.initView();this.map.on("moveend zoomend",function(){this.options.thecragmap.updateURL()});this.map.on("baselayerchange",function(b){if(!this.autoLayerSwapping)this.selectedLayer=b.layer.options.id;this.updateURL()},this);this.layerGroups.pie.on({clustermouseover:function(b){b=d.getNodesFromCluster(b.layer);$("body").trigger("node.over",{id:b[0].id,nodes:b})},clustermouseout:function(b){b=d.getNodesFromCluster(b.layer);$("body").trigger("node.out", {id:b[0].id,nodes:b})},clusterclick:function(b){b=d.getNodesFromCluster(b.layer);$("body").trigger("node.focus",{id:b[0].id,nodes:b})}});$("body").bind("node.over",function(b,c){d.nodeOver(c.id,c.nodes)});$("body").bind("node.out",function(b,c){d.nodeOut(c.id,c.nodes)});$("body").bind("node.focus",function(b,c){var e=d.index[c.id];d.popupForNodes(c.nodes||[e])});$("body").bind("node.select",function(b,c){d.index[c.id]&&d.nodeSelect(c.id)});$("body").bind("node.deselect",function(b,c){d.index[c.id]&& d.nodeDeselect(c.id)})} theCragMap.prototype={tree:{},index:{},store:{bbox:{},number:{},probes:null,pie:{},fence:{},labels:{}},node2url:function(a){return a.stub?"/climbing/"+a.stub:"/"+a.id},selectBaseLayer:function(a){var d=a.split(".");a=d[0];d=d[1];if(this.layers[d]&&this.layers[d][a]){this.layers[d][a].layer.addTo(this.map);this.selectedLayer=a+"."+d}else{this.autoLayer&&this.autoLayer.layer.addTo(this.map);this.selectedLayer="auto"}},updateCrumbFrom:function(a){if(!this.options.embed){for(var d=[],b=a;a;){d.unshift({nid:a.id, href:this.node2url(a),label:a.name});a=a.up}d[0].label=null;d[0].icon="globe";d.push({href:this.node2url(b)+"/maps"+location.hash,label:this.options.title});thecrag.crumbs&&thecrag.crumbs.replace(d)}},popupForNodes:function(a){a=a[0];var d=$("
'+(a.numberRoutes||0)+" routes
").appendTo($stats);$(''+(a.numberAscents||0)+" ascents
").appendTo($stats);if(a.children&&a.children.length&&a.res.numberRoutes>0)$(''+(a.res.numberRoutes||0)+" unlocated routes
").appendTo($stats);$stats.appendTo(c);a.rt?$('').appendTo(c): $('').appendTo(c);c.appendTo(d);a=L.popup({className:"tcm-popup"}).setLatLng(this.index[a.id].rcenter).setContent(d[0].outerHTML);this.controls.locate.stopFollowing&&this.controls.locate.stopFollowing();this.map.openPopup(a)},bubbleSize:function(a){return Math.round(10+Math.log(a+1)*3)},renderGearPieFromMarkers:function(a){var d=a.getAllChildMarkers(),b=0;a={};for(var c=0;c