var default_view="geometry";var default_baselayer="Mapnik";var default_opacity=0.3;var view=default_view;var baselayer=default_baselayer;var opacity=default_opacity;var lon=-12;var lat=25;var zoom=3;var overlays=new Array;var overlays_all=new Array;var view_data;var minzoom;var message;var single_overlay=null;var expand_layers=Object;var views=[{id:"geometry",area:"world",name:"Geometry"},{id:"tagging",area:"world",name:"Tagging"},{id:"places",area:"world",name:"Places"},{id:"highways",area:"world",name:"Highways"},{id:"addresses",area:"eu",name:"Addresses"},{id:"boundaries",area:"eu",name:"Boundaries"},{id:"water",area:"eu",name:"Water"},{id:"pubtrans_railway",area:"eu",name:"Public Transport - Railway Infrastructure"},{id:"pubtrans_mixed",area:"eu",name:"Public Transport - Non-rail Infrastructure"},{id:"pubtrans_ferries",area:"eu",name:"Public Transport - Ferries"},{id:"pubtrans_stops",area:"eu",name:"Public Transport - Stops"},{id:"pubtrans_network",area:"eu",name:"Public Transport - Network"},{id:"routing",area:"eu",name:"Routing"},{id:"plan_at",area:"at",name:"plan.at"},{id:"kreisgrenzen",area:"de",name:"Kreisgrenzen"},{id:"strassennrw",area:"de",name:"Straßen NRW"},{id:"nl",area:"nl",name:"Netherlands (AND)"}];var current_view;var map;var baselayers=new Array();var layer_wms;var proj4326=new OpenLayers.Projection("EPSG:4326");var projmerc=new OpenLayers.Projection("EPSG:900913");jQuery(document).ready(function(){parseQueryString();initViews(view);initMap();initBaseLayers(baselayer);if(map.getCenter()==null){jumpTo(lon,lat,zoom)}jQuery("#overlays").dynatree({checkbox:true,selectMode:3,imagePath:"/osmi/views/",onSelect:function(a,b){single_overlay=null;overlays=new Array;jQuery("#overlays").dynatree("getTree").visit(function(d,c){if(d.isSelected()&&d.data.key.substring(0,1)!="_"){overlays.push(d.data.key)}return true},null,false);if(overlays.length==0){layer_wms.setVisibility(false)}else{layer_wms.mergeNewParams({layers:getWMSLayers()});layer_wms.setVisibility(true)}updateOverlayShading();updateLinks()},onActivate:function(a){a.deactivate();if(a.data.key.substring(0,1)=="_"){a.toggleExpand()}else{toggleSingleOverlay(a.data.key)}},initAjax:{url:viewLink("/overlays.json"),success:initView2}})});function viewLink(a){return"/osmi/views/"+current_view.id+a}function updateTree(){var a=jQuery("#overlays").dynatree("getRoot");a.removeChildren();a.appendAjax({url:viewLink("/overlays.json"),success:initView2})}function initView2(){var a=new Array;minzoom=30;jQuery("#overlays").dynatree("getTree").visit(function(c,b){if(c.data.osmi_zmin<minzoom){minzoom=c.data.osmi_zmin}if(c.data.key.substring(0,1)!="_"){expand_layers[c.data.key]=c.data.osmi_additional_layers?c.data.osmi_additional_layers:[];expand_layers[c.data.key].unshift(c.data.key);a.push(c.data.key)}return true},null,false);if(overlays.length==0){overlays=a}jQuery("#overlayinfos").load(viewLink("/overlayinfo.html"));jQuery("#doclink").attr("href","http://wiki.openstreetmap.org/wiki/OSM_Inspector/Views/"+current_view.name);jQuery("#tstamp").load(viewLink("/tstamp"));jQuery.getJSON(viewLink("/view.json"),function(b){view_data=b;initView3()})}function initView3(){jQuery("#overlays").css("overflow","hidden");jQuery("#overlays div").css("overflow","hidden");var a=jQuery("#sel_data");a.html("");a.append(createNewOption("None","None",false));jQuery("div#overlays span.ui-dynatree-document a").each(function(b,c){jQuery(c).bind("mouseover",showInfo);jQuery(c).bind("mouseout",hideInfo)});jQuery("#overlays").dynatree("getTree").visit(function(e,c){e.expand(true);var d=(e.getLevel()>1?"&nbsp;&nbsp;":"")+e.data.title;var b=createNewOption(e.data.key,d,false);if(e.data.key.substring(0,1)=="_"||!e.data.osmi_queryable){b.disabled=true}else{overlays_all.push(e.data.key)}a.append(b);if(overlays.length==0){e._select(true,false,true)}else{if(jQuery.inArray(e.data.key,overlays)>=0){e._select(true,false,true)}else{e._select(false,false,true)}}return true},null,false);a.bind("change",changedDataSelector);layer_wms=new OpenLayers.Layer.WMS("OSM Inspector",viewLink("/wxs?"),{layers:getWMSLayers(),format:"image/png",projection:projmerc,displayProjection:proj4326,transparent:true},{numZoomLevels:19,singleTile:true,ratio:1,isBaseLayer:false,transitionEffect:"resize"});layer_wms.events.register("loadstart",null,function(){jQuery("#status").html('<img src="/img/indicator.gif" alt="" width="16" height="16"/>')});layer_wms.events.register("loadend",null,function(){jQuery("#status").html("")});if(overlays.length==0){layer_wms.setVisibility(false)}map.addLayer(layer_wms);zoomInMessage();map.events.register("click",map,function(c){jQuery("#selection").html('Loading... <img src="/img/indicator.gif" alt="" width="16" height="16"/>');var b=layer_wms.getFullRequestString({REQUEST:"GetFeatureInfo",EXCEPTIONS:"application/vnd.ogc.se_xml",BBOX:layer_wms.map.getExtent().toBBOX(),X:c.xy.x,Y:c.xy.y,INFO_FORMAT:"text/html",QUERY_LAYERS:getQueryableLayers(),WIDTH:layer_wms.map.size.w,HEIGHT:layer_wms.map.size.h});jQuery.ajax({url:b,type:"GET",success:function(d){jQuery("#selection").html(d);if(jQuery(".sel_resul")){jQuery(".sel_result").each(function(h,e){var g=OpenLayers.Bounds.fromString(jQuery(".sel_bbox",e).text());var f=jQuery(".sel_select",e).text().split(" ");jQuery(".sel_link_to_potlatch",e).attr("href",createPotlatchLink(g,f[0],f[1]));if((f[0]=="node"||f[0]=="way"||f[0]=="rel")&&(f[1]!=0)){jQuery(".sel_link_to_databrowser",e).attr("href",createDataBrowserLink(g,f[0]=="rel"?"relation":f[0],f[1]));jQuery(".sel_link_to_databrowser",e).html('<img class="button" src="/img/to_data_browser.png" title="Open data browser for this selection"/>');jQuery(".sel_link_to_databrowser",e).bind("click",function(){return true})}else{jQuery(".sel_link_to_databrowser",e).attr("href","");jQuery(".sel_link_to_databrowser",e).html('<img class="button" src="/img/to_data_browser_disabled.png" title="Can not open data browser, because there is no OSM id associated with this layer."/>');jQuery(".sel_link_to_databrowser",e).bind("click",function(){return false})}jQuery("table.featureinfo td",e).each(function(j,k){jQuery(k).html(jQuery(k).text().replace(/\|/g,"<br/>"))})})}}});OpenLayers.Event.stop(c)});updateView();if(mlon&&mlat){markers=new OpenLayers.Layer.Markers("Markers");map.addLayer(markers);setMarker(mlon,mlat)}}function parseQueryString(){var a=location.search.substr(1);if(a!=""){var b=a.split("&");for(var c=0;c<b.length;c++){var d=b[c].split("=");switch(d[0]){case"view":view=d[1];break;case"baselayer":baselayer=d[1];break;case"opacity":opacity=Number(d[1]);break;case"lon":lon=Number(d[1]);break;case"lat":lat=Number(d[1]);break;case"overlays":if(d[1]!=""){overlays=d[1].split(",")}break;case"zoom":zoom=parseInt(d[1]);break;case"mlon":mlon=Number(d[1]);break;case"mlat":mlat=Number(d[1]);break}}}}function initViews(b){var a=jQuery("#view");a.bind("change",null,changedView);jQuery.each(views,function(d,c){var e=createNewOption(c.id,c.name,c.id==b);e.style.backgroundImage="url(http://static.geofabrik.de/img/flags/"+c.area+".png)";a[0].appendChild(e);if(c.id==b){current_view=c}})}function initMap(){OpenLayers.IMAGE_RELOAD_ATTEMPTS=3;OpenLayers.Util.onImageLoadErrorColor="transparent";OpenLayers.ImgPath=OpenLayers._getScriptLocation()+"theme/geofabrik/img/";map=new OpenLayers.Map("map",{theme:null,projection:projmerc,displayProjection:proj4326,controls:[new OpenLayers.Control.Navigation(),new OpenLayers.Control.MousePosition({div:jQuery("#customMousePosition").get(0)}),new OpenLayers.Control.PanZoomBar()],maxExtent:new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),numZoomLevels:18,maxResolution:156543.0339,units:"m"});map.events.register("moveend",null,updateView);message=jQuery("#message");map.events.register("zoomend",null,zoomInMessage)}function zoomInMessage(){if(map.getZoom()<minzoom){message.show();message.html("You have to zoom in to see anything in this view.")}else{message.hide()}}function initBaseLayers(d){baselayers.Geofabrik=new OpenLayers.Layer.Geofabrik("Geofabrik","549e80f319af070f8ea8d0f149a149c2",{transitionEffect:null});baselayers.Mapnik=new OpenLayers.Layer.OSM.Mapnik("Mapnik");baselayers.TilesAtHome=new OpenLayers.Layer.OSM.Osmarender("Tiles@Home");baselayers.PublicTransport=new OpenLayers.Layer.XYZ("Public Transport","http://tile.xn--pnvkarte-m4a.de/tilegen/${z}/${x}/${y}.png");var a=jQuery("#baselayer");a.bind("change",changedBaseLayer);for(var c in baselayers){var b=baselayers[c];map.addLayer(b);b.setOpacity(opacity);if(d==c){map.setBaseLayer(b)}}jQuery("#baselayer_"+d)[0].selected=true;if(d=="None"){map.baseLayer.setVisibility(false)}jQuery("#opacity_slider").slider({value:opacity*100,slide:function(f,g){opacity=g.value/100;for(var e in baselayers){baselayers[e].setOpacity(opacity)}},change:function(f,g){opacity=g.value/100;for(var e in baselayers){baselayers[e].setOpacity(opacity)}updateLinks()}})}function jumpTo(c,b,a){var d=new OpenLayers.LonLat(c,b);map.setCenter(d.transform(proj4326,projmerc),a)}function jumpToFeature(id,coordinates){var bounds=new OpenLayers.Bounds();jQuery.each(coordinates.split(" "),function(i,c){eval("bounds.extend(new OpenLayers.LonLat("+c+"))")});map.zoomToExtent(bounds.transform(proj4326,projmerc))}function changedView(){jQuery("#selection").html("<i>click on the map to query</i>");current_view=jQuery.grep(views,function(a){return a.id==jQuery("#view").val()})[0];map.removeLayer(layer_wms);overlays=new Array;overlays_all=new Array;updateTree()}function changedBaseLayer(){baselayer=jQuery("#baselayer").val();updateSlider();updateBaseLayerInMap();updateLinks()}function changedDataSelector(){var a=jQuery("#sel_data").val();if(a=="None"){jQuery("#data").html("")}else{jQuery("#data").html('Loading... <img src="/img/indicator.gif" alt="" width="16" height="16"/>');jQuery("#data").load(viewLink("/data/"+a+"?BBOX="+layer_wms.getExtent().transform(projmerc,proj4326).toBBOX()))}}function getWMSLayers(){var a=new Object;jQuery.each(overlays,function(c,b){jQuery.each(expand_layers[b]||[],function(e,d){a[d]=true})});return jQuery.grep(view_data.layers,function(c,b){return a[c]}).join(",")}function getQueryableLayers(){var a=new Array;jQuery("#overlays").dynatree("getTree").visit(function(c,b){if(c.data.osmi_queryable){a.push(c.data.key)}return true},null,false);return a.join(",")}function updateSlider(){if(baselayer=="None"){jQuery("#opacity_slider").hide()}else{jQuery("#opacity_slider").show()}}function updateBaseLayerInMap(){if(baselayer=="None"){map.baseLayer.setVisibility(false)}else{jQuery.each(map.layers,function(b,a){if(a.name==baselayer){map.setBaseLayer(a);map.baseLayer.setVisibility(true)}})}}function updateView(){updateOverlayShading();updateZoomLevel();updateLinks();changedDataSelector()}function updateOverlayShading(){var a=map.getZoom();var b=0;jQuery("div#overlays span.ui-dynatree-document a").each(function(){var d=jQuery(this);if(single_overlay){if(single_overlay==d.parent().attr("id").substring(15)){d.css("color","#d00000");return}}trel=jQuery("#overlays").dynatree("getTree").getNodeByKey(d.parent().attr("id").substring(15));var c=trel.data.osmi_zmin;var e=trel.data.osmi_zmax;if(c<=a&&a<=e){d.css("opacity",1);d.css("color","#000000");b++}else{d.css("opacity",0.4);d.css("color","#a0a0a0")}})}function updateZoomLevel(){var a=map.getZoom();jQuery("#customZoomLevel").html("zoom="+a)}function updateLinks(){var a=map.getCenter().clone().transform(projmerc,proj4326);var c=map.getZoom();var b="?view="+current_view.id+"&lon="+a.lon.toFixed(5)+"&lat="+a.lat.toFixed(5)+"&zoom="+c;if(baselayer!=default_baselayer){b+="&baselayer="+baselayer}if(opacity!=default_opacity){b+="&opacity="+opacity.toFixed(2)}var d=overlays.join(",");if(d!=overlays_all.join(",")){b+="&overlays="+d}if(mlon&&mlat){b+="&mlon="+mlon+"&mlat="+mlat}jQuery("#permalink").attr("href",b);if(c>13){b="http://www.openstreetmap.org/edit?lon="+a.lon.toFixed(5)+"&lat="+a.lat.toFixed(5)+"&zoom="+c;jQuery("#potlatch").html('<a href="'+b+'" target="_blank"><img class="button" src="/img/to_potlatch.png" title="Open Potlatch editor with current map" width="16" height="16"/></a>')}else{jQuery("#potlatch").html('<img class="button" src="/img/to_potlatch_disabled.png" title="Open Potlatch editor with current map (zoom in to activate this button)" width="16" height="16"/>')}if(c>13){jQuery("#josm").html('<img class="button" src="/img/to_josm.png" onclick="openJOSMforMap()" title="Tell JOSM editor to zoom to current map extent - JOSM must be running already" width="16" height="16"/>')}else{jQuery("#josm").html('<img class="button" src="/img/to_josm_disabled.png" title="Tell JOSM editor to zoom to current map extent - JOSM must be running already (zoom in to activate this button)" width="16" height="16"/>')}}function showInfo(b){var c=jQuery(Event.element(b)).parent().attr("id").substring(15);var a=jQuery("#popupinfo_"+c);if(a){a.show()}}function hideInfo(b){var c=jQuery(Event.element(b)).parent().attr("id").substring(15);var a=jQuery("#popupinfo_"+c);if(a){a.hide()}}function setMarker(e,c){var a=new OpenLayers.Size(21,25);var d=new OpenLayers.Pixel(-a.w/2,-a.h);var b=new OpenLayers.Icon("/img/marker.png",a,d);var f=new OpenLayers.LonLat(e,c);marker=new OpenLayers.Marker(f.transform(proj4326,projmerc),b);markers.addMarker(marker)}function toggleSingleOverlay(a){if(single_overlay==a){layer_wms.mergeNewParams({layers:getWMSLayers()});single_overlay=null}else{layer_wms.mergeNewParams({layers:expand_layers[a]});single_overlay=a}updateOverlayShading()}function openJOSMforMap(){jQuery("#josmiframe")[0].src=createJOSMLink(map.getExtent().transform(projmerc,proj4326))}function openJOSM(c,a,b){jQuery("#josmiframe")[0].src=createJOSMLink(c,a,b)}function createJOSMLink(g,b,d){var h=g.toArray();var c=h[2]-h[0];var a=h[3]-h[1];h[0]-=Math.max(c/10,0.001);h[1]-=Math.max(a/10,0.001);h[2]+=Math.max(c/10,0.001);h[3]+=Math.max(a/10,0.001);var f="http://localhost:8111/load_and_zoom?left="+h[0].toFixed(5)+"&bottom="+h[1].toFixed(5)+"&right="+h[2].toFixed(5)+"&top="+h[3].toFixed(5);if(b&&d){f+="&select="+b+d}return f}function createPotlatchLink(e,b,c){var f=map.getZoomForExtent(e);var a=e.getCenterLonLat();var d="http://www.openstreetmap.org/edit?lon="+a.lon.toFixed(5)+"&lat="+a.lat.toFixed(5)+"&zoom="+f;if(b&&c){d+="&"+b+"="+c}return d}function createDataBrowserLink(d,a,b){var c="http://www.openstreetmap.org/browse/"+a+"/"+b;return c};