if(navigator.platform.match(/linux|bsd/i)) {
_mSvgEnabled=_mSvgForced=true; }
var db={};
db["ger"]=[ {nm:"Aachen",lat:"50.778105",lng:"6.088337"},
{nm:"Augsburg",lat:"48.37",lng:"10.898008"},
{nm:"Berlin",lat:"52.526456",lng:"13.411903"},
{nm:"Bielefeld",lat:"52.026197",lng:"8.537235"},
{nm:"Bochum",lat:"51.486",lng:"7.210897"},
{nm:"Bonn",lat:"50.735423",lng:"7.096395"},
{nm:"Bremen",lat:"53.080414",lng:"8.806228"},
{nm:"Chemnitz",lat:"50.836367",lng:"12.921467"},
{nm:"Dortmund",lat:"51.516626",lng:"7.457987"},
{nm:"Dresden",lat:"51.052344",lng:"13.728121"},
{nm:"Duisburg",lat:"51.433892",lng:"6.769895"},
{nm:"Düsseldorf",lat:"51.226076",lng:"6.788477"},
{nm:"Erfurt",lat:"50.97768",lng:"11.023098"},
{nm:"Essen",lat:"51.461066",lng:"7.014255"},
{nm:"Frankfurt",lat:"50.120137",lng:"8.684005"},
{nm:"Freiburg",lat:"47.999025",lng:"7.829732"},
{nm:"Hamburg",lat:"53.554864",lng:"9.989891"},
{nm:"Hannover",lat:"52.372247",lng:"9.73816"},
{nm:"Karlsruhe",lat:"49.010993",lng:"8.404176"},
{nm:"Kassel",lat:"51.321386",lng:"9.491241"},
{nm:"Kiel",lat:"54.323711",lng:"10.133453"},
{nm:"Köln",lat:"50.941685",lng:"6.955043"},
{nm:"Leipzig",lat:"51.34497",lng:"12.385619"},
{nm:"Lübeck",lat:"53.871254",lng:"10.688667"},
{nm:"Magdeburg",lat:"52.13177",lng:"11.62828"},
{nm:"Mannheim",lat:"49.487587",lng:"8.477668"},
{nm:"München",lat:"48.137196",lng:"11.575566"},
{nm:"Münster",lat:"51.965383",lng:"7.626421"},
{nm:"Nürnberg",lat:"49.454367",lng:"11.07396"},
{nm:"Rostock",lat:"54.087892",lng:"12.119464"},
{nm:"Saarbrücken",lat:"49.236542",lng:"6.995211"},
{nm:"Stuttgart",lat:"48.78074",lng:"9.181652"},
{nm:"Wiesbaden",lat:"50.084657",lng:"8.242301"},
{nm:"Wuppertal",lat:"51.271607",lng:"7.187032"} ];
db["eu"]=[{nm:"Amsterdam",lat:"52.373064",lng:"4.892822"},
{nm:"Athen",lat:"37.982565",lng:"23.716564"},
{nm:"Bratislava",lat:"48.15326",lng:"17.107772"},
{nm:"Brüssel",lat:"50.848548",lng:"4.3517"},
{nm:"Budapest",lat:"47.501837",lng:"19.0363"},
{nm:"Dublin",lat:"53.347578",lng:"-6.266155"},
{nm:"Helsinki",lat:"60.169998",lng:"24.94"},
{nm:"Kopenhagen",lat:"55.68",lng:"12.569999"},
{nm:"Lissabon",lat:"38.72",lng:"-9.14"},
{nm:"London",lat:"51.500995",lng:"-0.126198"},
{nm:"Madrid",lat:"40.418462",lng:"-3.703422"},
{nm:"Oslo",lat:"59.915578",lng:"10.738534"},
{nm:"Paris",lat:"48.857712",lng:"2.35043"},
{nm:"Prag",lat:"50.089364",lng:"14.424362"},
{nm:"Rom",lat:"41.89655",lng:"12.482196"},
{nm:"Stockholm",lat:"59.333846",lng:"18.06487"},
{nm:"Warschau",lat:"52.2351",lng:"21.008434"},
{nm:"Wien",lat:"48.21129",lng:"16.37"},
{nm:"Zürich",lat:"47.37978",lng:"8.540196"} ];
var mapdiv=document.getElementById("map");
var side=document.getElementById("dist");
var blue_l=[];var route_l=[];var saved=[];
var count=0; var points=[]; var greens=[];
var markers=[];var icon_url="http://labs.google.com/ridefinder/images/";
var map,ttip,ovM,lupe,unit,gdir,found;
_mLastResult="Zurück zur Ausgangskarte";
_mPreferMetric=true;
GEvent.addDomListener(mapdiv,"DOMMouseScroll",whee);GEvent.addDomListener(mapdiv,"mousewheel",whee);
var fl=false;
function MDControl(){} MDControl.prototype=new GControl();
MDControl.prototype.initialize=function(map){
var ain=document.createElement("div");
var savepos=document.createElement("span");
savepos.title="Aktuelle Position und Zoomlevel speichern";
savepos.className="s_button";
ain.appendChild(savepos);
savepos.appendChild(document.createTextNode("Position sichern"));
GEvent.addDomListener(savepos,"click",function(){
var centr=map.getCenter();var oom=map.getZoom();
saved.splice(0,2,centr,oom);
alert("Gespeichert: "+centr.toUrlValue()+"\nZoomlevel: "+oom); });
var tosav=document.createElement("span");
tosav.title="Zurück zur gespeicherten Position";
tosav.className="s_button";
ain.appendChild(tosav);
tosav.appendChild(document.createTextNode("Zeige Position"));
GEvent.addDomListener(tosav,"click",function() {
if(saved.length >0){map.setZoom(saved[1]);map.panTo(saved[0]);} });
var selM=document.createElement("select"); selM.id="selMap";
selM.className="s_button";
selM.title="Map-Typ wechseln";
var mts=map.getMapTypes();
for(var i=0; i< mts.length;i++){
var o="    "+mts[i].getName();
selM.options[selM.options.length]=new Option(o,i); }
selM.selectedIndex=0;
GEvent.addDomListener(selM,"change",function(){
var mt1=mts[selM.options[selM.selectedIndex].value];
map.setMapType(mt1);selM.blur(); }); ain.appendChild(selM);
map.getContainer().appendChild(ain); return ain; }
MDControl.prototype.getDefaultPosition=function(){
return new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(7,7)); }
function coll(){ var oo=document.getElementById("o_map").style;
var tt=document.getElementsByTagName("table")[0].style;
if(fl==0){ tt.visibility="hidden";oo.visibility="hidden";
mapdiv.style.width="100%"; }else{ tt.visibility="visible";oo.visibility="visible";
mapdiv.style.width="80%";}
fl=!fl; checkRes();}
function toggle(arg){ var r=document.getElementById("routediv").style;
var s=document.getElementById("searchdiv").style;
var res1=document.getElementById("results");
var res2=document.getElementById("panel"); 
if(arg){r.display="block";s.display="none";
document.forms["t"].elements["from"].focus();
res1.style.visibility="hidden";
if(res2.innerHTML != ""){ res2.style.visibility="visible"; } }
else{ r.display="none"; s.display="block";
document.forms["f"].elements["q"].focus();
res2.style.visibility="hidden";
if(res1.innerHTML !=""){ res1.style.visibility="visible"; } }
return false; }
function dirs(fromA,toA){ var panel=document.getElementById("panel");
panel.innerHTML=""; gdir=new GDirections(map,panel);
gdir.load("from: " +fromA+ " to: "+toA, {locale:"de_DE"});
panel.style.visibility="visible";GEvent.addListener(gdir,"load",handle); }
function handle(){if(gdir.getStatus().code==200){
var a=gdir.getGeocode(0);var b=gdir.getGeocode(1);
var mark=gdir.getMarker(0); var mark2=gdir.getMarker(1);
if(a.address.indexOf(",")!= -1){
mark.inh=a.address.substring(0,a.address.indexOf(","));
}else{ mark.inh=a.address;}
if(b.address.indexOf(",")!= -1){
mark2.inh=b.address.substring(0,b.address.indexOf(","));
}else{ mark2.inh=b.address;}
greens.push(mark,mark2); }
else{ alert("Die angegebene Route wurde nicht gefunden.\nError Code: "+gdir.getStatus().code);} }
function deepZ(allow){
var sat=G_SATELLITE_MAP;
if(allow==true){sat.getMaximumResolution=function(){return 21;}}
else{if(map.getZoom()>=19){ map.setZoom(18);}
sat.getMaximumResolution=function(){ return 19;}}}
function cM(point,icon,name){
var marker=new GMarker(point,icon);
marker.ttip=name;
var html="<div class='infowindow'><strong>"+name+ "<\/strong><p>Luftlinie in km bis [Zielpunkt]<br \/><form name='dist' action='' onsubmit='return townDist(\"" +name+ "\",this.loc.value)'><input class='search' name='loc' type='text' size='15' \/> <input type='submit' value='Zeig' \/><\/form><\/p><\/div>";
showT(marker);
GEvent.addListener(marker,"click",function(){
marker.openInfoWindowHtml(html);
setTimeout("document.forms['dist'].elements['loc'].focus()",700);});
return marker; }
function addI(i){
i.shadow=icon_url+"mm_20_shadow.png";
i.iconSize=new GSize(12,20);
i.shadowSize=new GSize(22,20);
i.iconAnchor=new GPoint(6,20);
i.infoWindowAnchor=new GPoint(5,1); }
function showT(mk){
GEvent.addListener(mk,"mouseout",function(){
ttip.style.display="none"; });
GEvent.addListener(mk,"mouseover",function(){
ttip.innerHTML=mk.ttip;
ttip.style.display="block";
if(typeof(ttip.style.filter)=="string"){
ttip.style.filter="alpha(opacity:70)"; }
var curr=map.getCurrentMapType().getProjection();
var pt=curr.fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
var offset=curr.fromLatLngToPixel(mk.getPoint(),map.getZoom());
var anchor=mk.getIcon().iconAnchor;
var width=mk.getIcon().iconSize.width+6;
var tpos=new GControlPosition(G_ANCHOR_TOP_LEFT,new GSize(offset.x-pt.x-anchor.x+width,offset.y-pt.y-anchor.y-11));
tpos.apply(ttip); }); }
function whee(e){
if(window.event){event.returnValue=false;}
if(e.cancelable){e.preventDefault();} }
function load(){
var addr=document.URL;
var index=addr.match(/\?q\=/);
bM(); if(index){ var q=unescape(addr.substr(addr.indexOf("=")+1,addr.length));
search(q,"Deutschland");document.forms["f"].elements["q"].value=q;} }
function bM(){
map=new GMap2((mapdiv),{draggableCursor:'default',draggingCursor:'move'});
var lect=new GCopyrightCollection('Relief:');
lect.addCopyright(new GCopyright(1,new GLatLngBounds(new GLatLng(-90,-180),new GLatLng(90,180)),0,"www.geolabels.com"));
var r_lay=new GTileLayer(lect,1,10);
r_lay.getTileUrl=function(a,b){
return "http://srtm.in-ulm.de/layer/relief_water_jpg/z"+
b+"/row"+a.y+"/"+b+"_"+a.x+"-"+a.y+".jpg"; };
var reli=new GMapType([r_lay],G_SATELLITE_MAP.getProjection(),"Relief",{errorMessage:_mMapError,textColor:"white",shortName:"Rel"});
map.addMapType(reli);
ttip=document.createElement("div");
ttip.className="tooltip";
map.getPane(G_MAP_FLOAT_PANE).appendChild(ttip);
map.enableScrollWheelZoom();
GEvent.bind(map,"click",this,this.uC);
ovM=new GOverviewMapControl(new GSize(164,164));
GEvent.addListener(map,"zoomend",function(a,t){
var lev=document.getElementById("nr");
if(lev){lev.innerHTML=t;}});
map.setCenter(new GLatLng(52.05249,9.84375),5);
map.addControl(new GLargeMapControl());
map.addControl(new GScaleControl());
map.addControl(new MDControl());
var icon=new GIcon();
icon.image=icon_url+"mm_20_red.png";
addI(icon);
var icon2=new GIcon();
icon2.image=icon_url+"mm_20_blue.png";
addI(icon2);
for(var i=0; i<db["ger"].length; i++) {
var point=new GLatLng(parseFloat(db["ger"][i].lat),parseFloat(db["ger"][i].lng));
var townname=db["ger"][i].nm;
map.addOverlay(cM(point,icon,townname)); }
for(var j=0; j<db["eu"].length; j++) {
var cpoint=new GLatLng(parseFloat(db["eu"][j].lat),parseFloat(db["eu"][j].lng));
var cname=db["eu"][j].nm;
map.addOverlay(cM(cpoint,icon2,cname)); }
posOv();}
function changeMap(tt,foo,s_e,z){
var zoom=12;if(map.getCurrentMapType().getName()=="Relief"){zoom=10;}
else if(s_e.match(/stra(ß|ss)e?/i)&& z){zoom=16;}
var spo=new GLatLng(parseFloat(tt),parseFloat(foo));
if(map){ map.setCenter(spo,zoom);}
var icon=new GIcon();icon.image="green.png";addI(icon);
var g_marker=cM(spo,icon,s_e);
map.addOverlay(g_marker);
g_marker.inh=s_e;
greens.push(g_marker); }
function posOv(){
map.addControl(ovM,new GControlPosition(G_ANCHOR_TOP_LEFT));
var oma=document.getElementById("map_overview");if(oma){
oma.firstChild.style.border="1px solid gray";
oma.firstChild.firstChild.style.left="4px";
oma.firstChild.firstChild.style.top="4px";
GEvent.addListener(map,"maptypechanged",function(){
ovM.getOverviewMap().setMapType(G_NORMAL_MAP); });
var n_map=document.createElement("div");
n_map.id="o_map";
n_map.appendChild(oma);
document.body.appendChild(n_map);
} }
function uC(lay,point){ if(point){
var icon=new GIcon();icon.image="orange.png";addI(icon);
count++;
var o_m=new GMarker(point,{icon:icon,draggable:true,bouncy:false,dragCrossMove:true});
map.addOverlay(o_m); o_m.inh=count;
markers.push(o_m);points.push(point);o_m.ttip="Punkt "+count;
showT(o_m);
GEvent.addListener(o_m,"drag",function(){
for(var u=0;u < route_l.length; u++){
map.removeOverlay(route_l[u]); }
for(var v=0; v < markers.length; v++){
if(markers[v]==o_m) {
map.removeOverlay(points[v]);
points.splice(v,1,o_m.getPoint()); } }
update(); });
GEvent.addListener(o_m,"click",function(){
for(var m=0; m < route_l.length; m++){
map.removeOverlay(route_l[m]); }
route_l.length=0;
for(var n=0; n < markers.length; n++){
if(markers[n]==o_m){
map.removeOverlay(markers[n]);
break; }}
markers.splice(n,1);points.splice(n,1);
if(markers.length==0){count=0;}else{count=markers[markers.length-1].inh;}
update();
});update();}}
function sD(){
var pane=map.getPane(G_MAP_MARKER_PANE);
if(!lupe){lupe=document.createElement("div");
lupe.id="lupe";var cc=map.fromLatLngToDivPixel(map.getCenter());var le=cc.x-60;var to=cc.y-40;
if(map.getCurrentMapType()!=G_NORMAL_MAP){lupe.className="w";}
GEvent.addListener(map,"maptypechanged",function(){
if(map.getCurrentMapType()!=G_NORMAL_MAP){lupe.className="w";}
else{lupe.className="";} });
lupe.innerHTML="Zoomlevel: <span id='nr'>"+map.getZoom()+"</span>";
pane.appendChild(lupe);var tpos=new GControlPosition(G_ANCHOR_TOP_LEFT,new GSize(le,to));
tpos.apply(lupe);var A=new GDraggableObject(lupe);
}else{ pane.removeChild(lupe);lupe=null;GEvent.clearListeners(map,"maptypechanged");}}
function update(){
ttip.style.display="none";
if(markers.length <= 1){side.innerHTML="&nbsp;";}
else if(markers.length>1){ routeDistance();
var newpoly=new GPolyline(points,"#ff6f27",3,1);
map.addOverlay(newpoly);
route_l.push(newpoly); }}
function routeDistance(){
var dist=0;
for(var i=1; i< points.length;i++){
dist+=calc(points[i-1].lat(),points[i-1].lng(),points[i].lat(),points[i].lng()); }
if(isNaN(dist)==false) {
if(dist>10){dist=Math.round(dist);unit=" km"; }
else {dist=Math.round(dist*1000);unit=" m"; }
var html="<strong>Punkt "+markers[0].inh+" - Punkt "+markers[markers.length-1].inh+"<\/strong><br \/>Luftlinie: "+dist+unit;
side.innerHTML=html; } }
function townDist(place,plo){
var g_lat,g_lng,h_lat,h_lng;
if( plo.match(/(\d+)/)){
var nr=RegExp.$1;
for(var i=0; i < points.length; i++) {
if(markers[i].inh==nr){
g_lat=points[i].lat();
g_lng=points[i].lng();
break; }}}
LOOP: for(var entry in db){
for(var j=0; j < db[entry].length;j++){
var town=db[entry][j].nm;
if(town.toLowerCase()==plo.toLowerCase()){
g_lat=parseFloat(db[entry][j].lat);
g_lng=parseFloat(db[entry][j].lng); }
if(town==place) {
h_lat=parseFloat(db[entry][j].lat);
h_lng=parseFloat(db[entry][j].lng); }
if(g_lat && h_lat){ break LOOP;}}}
if(!(g_lat && h_lat)) {
for(var k=0; k < greens.length; k++) {
if(greens[k].inh.toLowerCase()==plo.toLowerCase()){
g_lat=greens[k].getPoint().lat();
g_lng=greens[k].getPoint().lng(); }
if(greens[k].inh==place) {
h_lat=greens[k].getPoint().lat();
h_lng=greens[k].getPoint().lng(); }}}
if(g_lat){
var poly=new GPolyline([new GLatLng(h_lat,h_lng),new GLatLng(g_lat,g_lng)],"#FF1493",3,1);
map.addOverlay(poly); blue_l.push(poly);
var dist=calc(h_lat,h_lng,g_lat,g_lng);
if(dist >10){dist=Math.round(dist);unit=" km";}
else { dist= Math.round(dist*1000);unit=" m";}
if(nr) { plo="Punkt "+nr;}
else{plo= plo.replace(/^./, plo.charAt(0).toUpperCase());}
var html="<div class='infowindow'><p><strong>"+place+ " - " +plo+"<\/strong><br \/>Luftlinie: "+dist+unit+"<\/p><\/div>";
var point=new GLatLng(h_lat,h_lng);
map.openInfoWindowHtml(point,html,{pixelOffset:new GSize(0,-20)}); }
else{alert(plo+" wurde nicht gefunden, oder auf der\nKarte befinden sich Orte mit gleichen Namen.");}
return false; }
function calc(at12,gn_,pro16,tro){
var r=6371.3;var x=Math.sin(deg2rad(at12))*Math.sin(deg2rad(pro16));
var y=Math.cos(deg2rad(at12))*Math.cos(deg2rad(pro16));var s=r*Math.acos(x+y*Math.cos(deg2rad(gn_-tro)));return s; }
function deg2rad(deg){return deg/(180/Math.PI); }
function clI(){
if(gdir){gdir.clear();document.getElementById("panel").style.visibility="hidden";}
var lines=blue_l.concat(route_l);
for(var i=0; i < lines.length; i++) {
map.removeOverlay(lines[i]);}
blue_l.length=route_l.length=0;
side.innerHTML="&nbsp;";
for(var j=0; j < markers.length; j++){
map.removeOverlay(markers[j]); }
for(var k=0; k< greens.length; k++){
map.removeOverlay(greens[k]); }
markers.length=points.length=greens.length=count=0;
map.closeInfoWindow();}
function search(q,wo){
if(q.length <=1) {if(q=="")q="&Oslash"; found="<b>"+q+"<\/b> wurde nicht gefunden."
makVi(); return false;} found="";
if(wo.substr(0,2).toLowerCase()=="de"){
var req=GXmlHttp.create();
req.open("GET","cgi-bin/dbsearch.pl?q="+q,true);
req.onreadystatechange=function(){
if(req.readyState==4){var xml=req.responseXML;
s_markers=xml.getElementsByTagName("city");
if(s_markers.length >=1){
for(var i=0; i< s_markers.length;i++){
var lat=s_markers[i].getAttribute("lat");
var lng=s_markers[i].getAttribute("lng");
var f_name=s_markers[i].getAttribute("name");
var count=i+1;
found+= count + ". ";
found+= f_name.link("javascript:changeMap("+lat+ "," +lng+ ",'"+f_name+"')");
found+="<br>";} makVi();
changeMap(s_markers[0].getAttribute("lat"),s_markers[0].getAttribute("lng"),s_markers[0].getAttribute("name"));}
else{ geoG(q,wo); }}
}; req.send(null);}
else{ geoG(q,wo); }}
function makVi(){
var result=document.getElementById("results");result.style.visibility="visible";
result.innerHTML=found; }
function geoG(q,wo){
var geo=new GClientGeocoder(); geo.getLocations(q+", "+wo,function(giv){ 
if(giv.Status.code==G_GEO_SUCCESS){
for(var i=0; i<giv.Placemark.length; i++) {
var p=giv.Placemark[i].Point.coordinates;
var lat=p[1];var lng=p[0];var count=i+1;
if(giv.Placemark[i].address.indexOf(",") != -1){
var g_name=giv.Placemark[i].address.substring(0,giv.Placemark[i].address.lastIndexOf(",")); }else{var g_name=giv.Placemark[i].address; }
found += count+". ";
found+=g_name.link("javascript:changeMap("+lat+","+lng+",'"+g_name+"',"+1+")");
found +="<br>";} makVi();
var a=giv.Placemark[0]; changeMap(a.Point.coordinates[1],a.Point.coordinates[0],a.address.substring(0, a.address.lastIndexOf(",")),1); }
else{found+= "<b>"+q+"<\/b> wurde in "+wo+" nicht gefunden."; makVi(); } });}
window.onresize=checkRes;
function checkRes(){map.checkResize();}
function impress(){
F=open("impress.html","ff","width=600,height=464,left=100,top=50");F.focus(); }

