var map;
var ef=50.9745833333;
var ek=10.3245555556;
var cp=6;	//Standardzoom
var ec="0a";
var hK=true;
var cb=false;
var hE=true;
var cd=false;
var dN='<span style="font-family:arial;font-size:10pt">Das Höhenprofil ist nur für Strecken mit 2 und mehr Punkten verfügbar. Eventuell kann für Ihre Strecke kein Profil erzeugt werden!</span>';
var gn='<div style="font-family:arial;font-size:10pt;float:left;width:100px"><a href="javascript:refreshGraph();">Profil aktualisieren</a>: Ein oder mehr Höhenabfragen lieferten Fehler ("0" im Profil). Link anklicken zum erneuten abfragen.</div>';
var jC=0;
var bg='0';
var ew=true;
var iz=false;
var gc=false;
var aH=false;
var an=0;
var cP=0;
var dx=0;
var cL=false;
var O='';
var cF=true;
var ah=location.href;
var aN;
var Q=new Object();
var aV=0;
var ck=new Object();
var aC=new Array(0);
var t;
var H;
var unlinkElevation0="aus";
var unlinkElevation100="klein";
var unlinkElevation200="gross";
var linkElevation0="<a class=\"linkfettblau\" href=\"javascript:elevationSwitch('0');\">aus</a>";
var linkElevation100="<a class=\"linkfettblau\" href=\"javascript:elevationSwitch('100');\">klein</a>";
var linkElevation200="<a class=\"linkfettblau\" href=\"javascript:elevationSwitch('200');\">gross</a>";
var saveLinkActive='<a class=\"linkfettblau\" href="javascript:createPermalink();">Strecke speichern</a>';
var saveLinkInactive='<b>Strecke gespeichert</b>';
var saveLinkSaving='Speichern...';

gO=function(a,b,c)
{
	var fy=new GPoint(a.x*256,(a.y+1)*256);
	var io=new GPoint((a.x+1)*256,a.y*256);
	var dA=G_NORMAL_MAP.getProjection().fromPixelToLatLng(fy,b,c);
	var dD=G_NORMAL_MAP.getProjection().fromPixelToLatLng(io,b,c);
	var hN=dA.x+","+dA.y+","+dD.x+","+dD.y;
	var fE="EPSG:4326";
	var P=this.myBaseURL;
	P+="&REQUEST=GetMap";
	P+="&SERVICE=WMS";
	P+="&reaspect=false&VERSION=1.1.1";
	P+="&LAYERS="+this.myLayers;
	P+="&STYLES=default";
	P+="&FORMAT="+this.myFormat;
	P+="&BGCOLOR=0xFFFFFF";
	P+="&TRANSPARENT=TRUE";
	P+="&SRS="+fE;
	P+="&BBOX="+hN;
	P+="&WIDTH=256";
	P+="&HEIGHT=256";
	P+="&GroupName="+this.myLayers;
	return P;
};

var aU=new GTileLayer(new GCopyrightCollection(""),1,17);
aU.myLayers='DRG';
aU.myFormat='image/jpeg';
aU.myBaseURL='http://www.terraserver-usa.com/ogcmap6.ashx?';
aU.getTileUrl=gO;
var gX=[aU];
var bP=new GMapType(gX,G_SATELLITE_MAP.getProjection(),"Topo",G_SATELLITE_MAP);
var bc=new GCopyrightCollection("<a href=\"http://www.openstreetmap.org/\">OpenStreetMap</a> data provided by <a href=\"http://www.cloudmade.com/\">Cloudmade</a>");
bc.addCopyright(new GCopyright(1,new GLatLngBounds(new GLatLng(-90,-180),new GLatLng(90,180)),0," "));
var bI=new GTileLayer(bc,1,18,{tileUrlTemplate:'http://tile.cloudmade.com/6dfaf084885456cfb9612333f46d2e0f/1/256/{Z}/{X}/{Y}.png'});
var bO=new GMapType([bI],G_SATELLITE_MAP.getProjection(),"OSM",G_SATELLITE_MAP);

function initializeMap()
{
	aN=au('r',ah);
	if(aN.length>0)
	{
		var ct=document.getElementById("map");
		ct.style.fontFamily="arial";
		ct.style.fontSize="24pt";
		ct.innerHTML='Suche nach Strecke '+aN+'...';
		O=aN;
		dS(aN);
	}
	else
	{
		dB();
		eh();
	}
	bk();
};

function dB()
{
	map=new GMap2(document.getElementById("map"),{draggableCursor:'crosshair',draggingCursor:'crosshair'});
	map.setCenter(new GLatLng(ef,ek),cp);
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.addMapType(bP);
	map.addMapType(G_PHYSICAL_MAP);
	map.addMapType(bO);
	map.addControl(new GScaleControl());
	map.enableContinuousZoom();
	map.disableDoubleClickZoom();
	var lp=new GKeyboardHandler(map);
	document.getElementById("elevationChart").innerHTML=dN;
	document.getElementById('map').style.height=mapHeight+'px';
	document.getElementById('adDiv').style.marginTop=adMargin+'px';	
	GEvent.addListener(map,"move",function()
	{
		redrawLinesAndMarkers(o);
	});
	GEvent.addListener(map,"dblclick",function(dummyOverlay,clickedLatLng)
	{
		var eJ=map.getCenter();
		cB(clickedLatLng.lng(),clickedLatLng.lat(),cb,cd);
		aE();
		redrawLinesAndMarkers(o);
	});
	GEvent.addListener(map,"zoomend",function(kv,ks)
	{
		bz();
		redrawLinesAndMarkers(o);
	});
};

function redrawLinesAndMarkers(o)
{
	aL(o);
	aq(o);
};

var V=new Array(0);
var F=new Array(0);
var L=new Array(0);
var o=new Array(0);
var A=new Array(0);
var ap=new Array(0);
var B=new Array(0);
var ax=new Array(0);
var ix;
var ep=0;
var bRecordPoints=false;
var eE=0;
var fh=1;
var ENGLISH="0";
var METRIC="1";
var eo="2";
var dp="3";
var WEIGHT="4";
var SHOW="5";
var HIDE="6";
var LEFT="7";
var RIGHT="8";
var hF="start";
var ik="stop";
var bG="0";
var dO="1";
var ca="0";
var fo="1";
var gI="2";
var aF=null;
var cj= -1;
var by=ai();
var cY;
var bJ=true;
B.push(0);
window.onunload=bC;

function cB(ac,aa,ad,ab)
{
	if(bRecordPoints)
	{
		if(hd(ad,ab,F.length))
		{
			fI(ac,aa,ad,ab)
		}
		else
		{
			ey(ac,aa,ad,ab);
			if((!ab)&&(!ad)){V.push(bG);}
		}
	}
};

function fI(ac,aa,ad,ab)
{
	var eI=hX(o[o.length-1], new GLatLng(aa,ac));
	bo=new GDirections(undefined,document.getElementById("directionsText"));
	if(bX()==ca)
	{
		bo.loadFromWaypoints(eI,{getPolyline:true,travelMode:G_TRAVEL_MODE_WALKING});
	}
	else if(bX()==fo)
	{
		bo.loadFromWaypoints(eI,{getPolyline:true,travelMode:G_TRAVEL_MODE_DRIVING});
	}
	GEvent.addListener(bo,"load",
		function()
		{
			var bx=bo.getPolyline();
			for(var C=1;C<bx.getVertexCount();C++)
			{
				ey(bx.getVertex(C).lng(),bx.getVertex(C).lat(),ad,ab);
				if(C==bx.getVertexCount()-1)
				{
					V.push(bG);
				}
				else
				{
					V.push(dO);
				}
			}
			aL(o);aq(o);
		}
	);
};
	
function hX(dg,eR)
{
	var cI=new Array(dg.lat()+', '+dg.lng(),eR.lat()+', '+eR.lng());
	return cI;
};

function ey(ac,aa,ad,ab)
{
	F.push(ac);
	L.push(aa);
	o.push(new GLatLng(aa,ac));
	A.push(aF);
	cP=A.length;
	eN(F,L,fh);
	fA(ad,ab);
	fg(B.length);
	bE();
};

function fA(ad,ab)
{
	if(ad==cb)
	{
		if(ab==cd)
		{
			if(bg>0)
			{
				getElevationsAndDrawGraph();
			}
		}
	}
};

function jL()
{
	var bn=L[L.length-2];
	var ba=L[L.length-1];
	var bL=F[F.length-2];
	var bK=F[F.length-1];
	return(Math.atan2(Math.sin(bK-bL)*Math.cos(ba),Math.cos(bn)*Math.sin(ba)-Math.sin(bn)*Math.cos(ba)*Math.cos(bK-bL)))%(2*Math.PI);
};

function bz()
{
	gJ();
	ax=new Array(0);
	for(var k=3;k<=B.length;k++)
	{
		fg(k);
	}
};

function fg(cf)
{
	if(map.getZoom()>11)
	{
		var bq;
		var ga=al(B[cf-1]);
		if(B.length<1){bq=0;}
		else{bq=al(B[cf-2]);}
		
		var dn=Math.floor(bq);
		var de=Math.floor(ga);
		
		if(dn<de)
		{
			for(var i=dn+1;i<=de;i++)
			{
				gm(parseFloat(i)-bq,cf-1);
			}
		}
	}
};

function gQ(o,D)
{
	var cw=o[D-1];
	var cV=o[D-2];
	var bZ;
	if(cV.lng()==cw.lng())
	{
		bZ=.00000001
	}
	else
	{
		bZ=cV.lng()-cw.lng()
	}

	return((cV.lat()-cw.lat())/(bZ));
};

function ij(D)
{
	var ea=D-2;
	var eY=D-1;
	return Math.sqrt(Math.pow(o[ea].lng()-o[eY].lng(),2)+Math.pow(o[ea].lat()-o[eY].lat(),2))
};

function gm(ep,D)
{
	var gL=ep/al(ap[D-1]);
	var gD=ij(D);
	var eL=gL*gD;
	var bL=o[D-2].lng();
	var bn=o[D-2].lat();
	var cT=gQ(o,D);
	var co=eL*(1/(Math.sqrt(1+Math.pow(cT,2))));
	var cn=eL*(cT/((Math.sqrt(1+Math.pow(cT,2)))));
	var hP=parseFloat(o[D-1].lng());
	var fR=parseFloat(o[D-2].lng());
	
	if(fR>hP)
	{
		co= -co;cn= -cn;
	}
	
	var bK=parseFloat(bL)+parseFloat(co);
	var ba=parseFloat(bn)+parseFloat(cn);
	ax.push(new GLatLng(ba,bK));
};

function eN(F,L,en)
{
	if(en==fh)
	{
		aS=hV(F,L);
		B.push(B[B.length-1]+aS);
		ap.push(aS);
	}
	else if(en==eE)
	{
		B.pop();
		ap.pop();
	}
	eP();
};

function handleWeightChange()
{
	var fn=B[B.length-1];
	by=ai();
	eW(fn);
};

function eW(fn)
{
	var aP=document.controlPanel.weight.value;
	if(!isNaN(aP))
	{
		var cs;
		if(ai()==METRIC)
		{
			cs=parseFloat(aP);
		}
		else
		{
			cs=parseFloat(aP)*.45359237;
		}
		var gE=parseFloat(fn)*1.609345;
		document.controlPanel.calories.value=gE*cs*1.036;
	}
};

function eP()
{
	document.controlPanel.mileage.value=parseInt(al(B[B.length-1])*10000)/10000;
	eW(B[B.length-1]);
	var aS=0;
	if(ap.length>0)
	{
		aS=ap[ap.length-1];
	}
	document.controlPanel.lastLeg.value=parseInt(al(aS)*10000)/10000;
};

function gK(fO,fN,gx,fS)
{
	var fP=new GLatLng(fO,fN);
	var fV=new GLatLng(gx,fS);
	var result=fP.distanceFrom(fV)*.000621371192;
	return(result);
};

function bi(gv,defaultValue)
{
	var cH='';
	var eB=au(gv,ah);
	if(eB.length>0)
	{
		cH=eB;
	}
	else
	{
		cH=defaultValue;
	}
	return cH;
};

function completeThereAndBackCourse()
{
	var gr=o.length-1;
	if(o.length>1)
	{
		for(var i=gr-1;i>=0;i--)
		{
			aH=false;
			cB(o[i].lng(),o[i].lat(),cb,hE);
			an++;
			cC(A[i],A.length-1);
			V.push(V[i])
		}
		aH=true;
		aJ();
		aL(o);
		aq(o);
	}
};

function eh()
{
	var da=au('fl',ah);
	if(da.length>0)
	{
		var aW=da.split('-');
		var bf=aW[0];
		var ha=aW[1];
		var hz=aW[2];
		var weight=aW[3];
		var cx=aW[4];
		
		if(bf=='s')
		{
			map.setMapType(G_SATELLITE_MAP);
		}
		else if(bf=='m')
		{
			map.setMapType(G_NORMAL_MAP);
		}
		else if(bf=='h')
		{
			map.setMapType(G_HYBRID_MAP);
		}
		else if(bf=='t')
		{
			map.setMapType(bP);
		}
		else if(bf=='p')
		{
			map.setMapType(G_PHYSICAL_MAP);
		}
		else if(bf=='o')
		{
			map.setMapType(bO);
		}
		
		(ha=='m')?eD(METRIC):eD(ENGLISH);
		(hz=='s')?toggleCalorieCounter(SHOW):toggleCalorieCounter(HIDE);
		document.controlPanel.weight.value=unescape(weight);
		by=ai();
		(cx=='0')?toggleMarkers(HIDE):toggleMarkers(SHOW);
	}
	
	var bS=parseFloat(bi('centerX',ek));
	var bV=parseFloat(bi('centerY',ef));
	var gi=au('zl',ah);
	var bh;
	if(gi.length!=0)
	{
		var gs=au('zv',ah);
		bh=parseInt(bi('zl',cp));
		if(gs.length==0)
		{
			bh=17-bh;
		}
	}
	else
	{
		bh=cp;
	}
	map.setCenter(new GLatLng(bV,bS),bh);
	var cQ=bi('rdm',ca);hg(cQ);
	var bT=au('pta',ah);
	if(bT.length>0)
	{
		var fu=bT.split(",");
	}
	var bA=au('polyline',ah);
	if(bA.length>0)
	{
		aY=gp(bA);
		bRecordPoints=true;
		document.controlPanel.startRecording.value='Messung läuft';
		var C=0;
		while(C<aY.length)
		{
			if(O.length==0)
			{
				var aa=eg(aY[C++]);
				var ac=eg(aY[C++]);
			}
			else
			{
				var aa=aY[C++];
				var ac=aY[C++];
			}
			cB(ac,aa,hK,cd);
			if(bT.length>0)
			{
				V.push(fu[(C/2)-1]);
			}
			else
			{
				V.push(bG);
			}
		}
		
		if(O.length!=0)
		{
			O='';
			if(aN.length==0)
			{
				bE();
			}
			else
			{
				eV();
			}
		}
		aL(o);
		aq(o);
		var fe=bi('elev',ec);
		if(fe!=ec)
		{
			var fb=fe.split('a');
			var gW=fb[0];
			var cK=fb[2].split('b');
			for(var i=0;i<cK.length;i++)
			{
				aH=false;
				if(cK[i]=="0")
				{
					cC(aF,i);
				}
				else
				{
					cC(cK[i]/100,i);
				}
			}
			aH=true;
			aJ();
			elevationSwitch(gW);
		}
	}
};

function eq(string,length,eH,dE)
{
	var hT=string.length;
	for(k=0;k<(length-hT);k++)
	{
		if(dE==LEFT)
		{
			string=eH+string;
		}
		else if(dE==RIGHT)
		{
			string=string+eH;
		}
	}
	return string;
};

function ds(ae)
{
	var aQ;
	if(ae.charAt(0)=="-")
	{
		aQ=true;
		ae=ae.replace('-','');
	}
	else
	{
		aQ=false;
	}
	var gZ=parseFloat(ae)*100000;
	var K=gZ.toString();
	if(K.indexOf(".")>0)
	{
		K=K.substr(0,K.indexOf("."));
	}
	if(K.length<5)
	{
		K=eq(K,5,"0",LEFT);
	}
	if(aQ)
	{
		K='-'+K;
	}
	
	return K;
};

function hY(ae)
{
	if(ae.charAt(0)=="-")
	{
		aQ=true;
		ae=ae.replace('-','');
	}
	else
	{
		aQ=false;
	}
	var K=new String(ae);
	if(K.length<5)
	{
		K=eq(K,5,"0",LEFT);
	}
	if(aQ)
	{
		K='-'+K;
	}
	return K;
};

function eg(ae)
{
	var ci=hY(new String(ae));
	var hS=ci.length;
	var ei=hS-5;
	var hn=ci.substr(ei,5);
	var hi=ci.substr(0,ei);
	return parseFloat(hi+'.'+hn);
};

function jP(ak)
{
	var bN='';
	var ir;
	for(i=0;i<ak.length;i++)
	{
		bN+=(ds(new String(ak[i].lat()))+','+ds(new String(ak[i].lng())));
		if(i<ak.length-1)bN+=',';
	}
	return bN;
};

function hV(F,L)
{
	var ff=0;
	dr=F.length-1;
	df=F.length-2;
	if(F.length>1)
	{
		var aS;
		ff=gK(L[dr],F[dr],L[df],F[df]);
	}
	return ff;
};

function bR()
{
	F.pop();
	L.pop();
	o.pop();
	eN(F,L,eE);
	bz();
	V.pop();
	A.pop();
	cP=A.length;an--;
};

function removeLastLeg()
{
	if(F.length>0)
	{
		if(V[o.length-2]==bG)
		{
			bR();
		}
		else
		{
			while(V[o.length-2]==dO)
			{
				bR();
			}
			bR();
		}
		bE();
		aL(o);
		aq(o);
		aJ()
	}
	else
	{
		alert('Keine Punkte zum Löschen vorhanden');
	}
};

function jV(a)
{
	var p=a.split(',');
	var d='';
	var ej=0;
	var db=0;
	for(c=0;c<p.length;c+=2)
	{
		x=p[c];
		fq=x-ej;
		ej=x;
		R=(Math.abs(fq)<<1)-(fq<0);
		do
		{
			e=R&31;
			R>>=5;
			if(R) 
			{
				e|=32;
			}			
			d+=String.fromCharCode(e+63);
		}
		while(R!=0);
		y=p[c+1];
		el=y-db;
		db=y;
		R=(Math.abs(el)<<1)-(el<0);
		do
		{
			e=R&31;
			R>>=5;
			if(R) {e|=32};
			d+=String.fromCharCode(e+63);
		}
		while(R!=0);
	}
	return d;
};
		
function au(fX,ah)
{
	var dT='';
	var ev=new String(ah);
	var cg=new String(fX);
	cg=cg.toLowerCase();
	if(ev.indexOf('?')> -1)
	{
		var ez=ev.split('?');
		if(ez[1].length>0)
		{
			var hm=ez[1];
			var cX=hm.split("&");
			for(i=0;i<=cX.length-1;i++)
			{
				var fZ=cX[i];
				var cr=new String(cX[i]);
				cr=cr.toLowerCase();
				var dM=cr.split('=');
				var dy=dM[0];
				var ll=dM[1];
				if(cg==dy)
				{
					dT=unescape(fZ.substr(dy.length+1));
					break;
				}
			}
		}
	}
	return dT;
};

function addBookmark(title,url)
{
	window.external.AddFavorite(url,title);
};

function fQ(ak)
{
	var I='';
	for(var i=0;i<ak.length;i++)
	{
		I+=ak[i].lat()+'a'+ak[i].lng();
		if(i<ak.length-1)
		{
			I+='a';
		}
	}
	return I;
};

function eF()
{
	var bS=map.getCenter().lng();
	var bV=map.getCenter().lat();
	var dw='';
	if(o.length>0)
	{
		dw=fQ(o);
	}
	var dC=new String(location.href);
	var ig=dC.split('?');
	dC=ig[0];
	return('centerX='+escape(bS)+'&centerY='+escape(bV)+'&zl='+new String(map.getZoom())+'&zv=2'+'&fl='+fY()+'&polyline='+escape(dw)+'&elev='+gd()+'&rId='+O+'&rdm='+bX()+'&pta='+V.join());
};

function fY()
{
	var I;
	if(map.getCurrentMapType()==G_SATELLITE_MAP)
	{
		I='s';
	}
	else if(map.getCurrentMapType()==G_NORMAL_MAP)
	{
		I='m';
	}
	else if(map.getCurrentMapType()==G_HYBRID_MAP)
	{
		I='h';
	}
	else if(map.getCurrentMapType()==bP)
	{
		I='t';
	}
	else if(map.getCurrentMapType()==G_PHYSICAL_MAP)
	{
		I='p';
	}
	else if(map.getCurrentMapType()==bO)
	{
		I='o';
	}
	I+="-";
	I+=((ai()==METRIC)?'m':'e');
	I+="-";
	I+=((document.getElementById('weightRow').style.display=='none')?'h':'s');
	I+="-";
	I+=escape(document.controlPanel.weight.value);
	I+="-";
	I+=((bJ==true)?'1':'0');
	return I;
};

function jU()
{
	document.getElementById("url").value=eF();
	document.tinyUrlForm.submit();
};

function createPermalink()
{
	eu(eF());
	eV();
};

function fH()
{
	document.getElementById("routeUrlMessage").style.display = "inline";
	//document.getElementById('routeUrlMessage').innerHTML="<div style='color:#ff0000'>URL for this route is: http://www.gmap-pedometer.com/?r="+O+" "+((document.all)?"<a href=\"javascript:addBookmark('Gmap Pedometer Route "+O+"','http://www.gmap-pedometer.com/?r="+O+"');\">Add bookmark</a>":"");
	document.getElementById('routeUrlMessage').innerHTML="<div style='margin-left:25px;'><span class='fettrot'>URL für diese Strecke ist: http://www.greif.de/streckenvermessung-"+O+".html "+((document.all)?"<a class='linkfettblau' href=\"javascript:addBookmark('Greif-Streckenvermessung Route "+O+"','http://www.greif.de/streckenvermessung-"+O+".html');\">Zu den Favoriten</a>":"");
};

function bE()
{
	document.getElementById('saveLink').innerHTML=saveLinkActive;
	cF=false;
};

function eV()
{
	document.getElementById('saveLink').innerHTML=saveLinkSaving;
	cF=true;
};

function dS(fB)
{
	var v=GXmlHttp.create();
	v.open("POST","scripts/getRoute.php",true);
	v.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	v.onreadystatechange=function()
	{
		if(v.readyState==4)
		{
			ah='?'+v.responseText;
			document.getElementById("map").innerHTML='';
			dB();
			eh();
		}
	};
	v.send('rId='+fB);
};

function eu(im)
{
	var v=GXmlHttp.create();
	v.open("POST","scripts/saveRoute.php",true);
	v.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	v.onreadystatechange=function()
	{
		if(v.readyState==4)
		{
			O=v.responseText;
			document.getElementById('saveLink').innerHTML=saveLinkInactive;
			fH();
		}
	};
	v.send(im);
	aE();
};

function gp(a)
{
	if(O.length==0)
	{
		var b=a.length;
		var c=0;
		var d=new Array();
		var e=0;
		var R=0;
		while(c<b)
		{
			var g;
			var h=0;
			var i=0;
			do
			{
				g=a.charCodeAt(c++)-63;i=i|(g&31)<<h;h=h+5
			}
			while(g>=32);
			
			var l;
			if(i&1)
			{
				l= ~(i>>1);
			}
			else
			{
				l=i>>1;
			}
			e=e+l;
			d.push(e);
			h=0;
			i=0;
			do
			{
				g=a.charCodeAt(c++)-63;
				i=i|(g&31)<<h;
				h=h+5;
			}
			while(g>=32);
	
			var m;
			if(i&1)m= ~(i>>1);else m=i>>1;
			R=R+m;
			d.push(R)
		}
		return d;
	}
	else
	{
		var cI=a.split('a');
		return cI;
	}
};

function clearLinkHandler()
{
	if(bRecordPoints)
	{
		if(confirm("Wollen Sie die erstellte Strecke wirklich löschen?\nKlicken Sie OK um alle Punkte zu löschen und die Messung zu stoppen.\nKlicken Sie Abbrechen um die Messung fortzusetzen.\nWenn Sie die Strecke gespeichert haben, werden weitere Änderungen mit einer anderen Strecken-ID gespeichert."))
		{
			B.splice(1,B.length-1);
			ap.splice(0,ap.length);
			o.splice(0,o.length);
			F.splice(0,F.length);
			L.splice(0,L.length);
			ax.splice(0,ax.length);
			A.splice(0,A.length);
			V.splice(0,V.length);
			an=0;
			cP=0;
			document.controlPanel.mileage.value='0';
			document.controlPanel.lastLeg.value='0';
			document.controlPanel.calories.value='0';
			map.clearOverlays();
			aJ();
			bRecordPoints=false;
			document.controlPanel.startRecording.value='Messung starten';
			if(O!='')
			{
				document.getElementById('routeUrlMessage').innerHTML="<div style='margin-left:230px;'><span class='fettrot'>Neue Messung wurde gestartet.</span></div>";
			}
			bE();O='';
		}
	}
	else
	{
		alert('Keine Punkte zum löschen vorhanden.');
	}
};

function aq(o)
{
	if(o.length>0)
	{
		if(bJ)
		{
			dG(o[0],hF);
			dG(o[o.length-1],ik);
			for(var m=0;m<ax.length;m++)
			{
				var cR;
				var bW=m+1;
				cR="scripts/unitMarker.php?num="+bW;
				var icon=new GIcon();
				icon.image=cR;
				icon.shadow="shadow.png";
				icon.iconSize=new GSize(20,34);
				icon.shadowSize=new GSize(37,34);
				icon.iconAnchor=new GPoint(9,34);
				hR(ax[m],icon,m);
			}
		}
	}
	else
	{
		map.clearOverlays();
	}
};

function dG(av,id)
{
	if(Q[id])
	{
		map.removeOverlay(Q[id]);
	}
	Q[id]=new GMarker(av);
	map.addOverlay(Q[id]);
};

function gJ()
{
	for(var m=0;m<ax.length;m++)
	{
		if(Q[m]!=undefined)
		{
			map.removeOverlay(Q[m]);
			Q[m]=undefined;
		}
	}
};

function hR(av,icon,D)
{
	var jo=false;
	var kf=false;
	if(map.getBounds().contains(av))
	{
		if(Q[D]==undefined)
		{
			Q[D]=new GMarker(av,icon);
			map.addOverlay(Q[D]);
		}
	}
	else
	{
		if(Q[D]!=undefined)
		{
			map.removeOverlay(Q[D]);
			Q[D]=undefined;
		}
	}
};

function fL(bm,bj)
{
	var dI,ed,fa,ft;
	var dH,er,fd,eS;
	dI=bm.minX;
	ed=bm.maxX;
	fa=bm.minY;
	ft=bm.maxY;
	dH=bj.minX;
	er=bj.maxX;
	fd=bj.minY;
	eS=bj.maxY;
	return!(dH>ed||er<dI||fd>ft||eS<fa);
};

function dF(aM)
{
	ck[aV]=new GPolyline(aC,aM);
	map.addOverlay(ck[aV]);
	aV++;
	aC.splice(0,aC.length)
};

function aL(o)
{
	for(var i=0;i<aV;i++)
	{
		map.removeOverlay(ck[i]);
	}
	aV=0;
	if(o.length>0)
	{
		var aM;
		if(cF)
		{
			aM='#0000FF';
		}
		else
		{
			aM='#FF0000';
		}
		var cu=false;
		var fG=map.getBounds().getSouthWest();
		var fF=map.getBounds().getNorthEast();
		var fK=new GBounds(new Array(map.fromLatLngToDivPixel(fG),map.fromLatLngToDivPixel(fF)));
		var dh;
		var kq=new GPoint(0,0);
		for(var C=1;C<o.length;C++)
		{
			dh=new GBounds(new Array(map.fromLatLngToDivPixel(o[C]),map.fromLatLngToDivPixel(o[C-1])));
			if(fL(fK,dh))
			{
				if(!cu)
				{
					aC.push(o[C-1]);
				}
				aC.push(o[C]);
				cu=true;
			}
			else
			{
				cu=false;
				if(aC.length>0)
				{
					dF(aM);
				}
			}
		}
		if(aC.length>0)
		{
			dF(aM);
		}
	}
};

function hw(M)
{
	var az=document.controlPanel.units;
	if(M==ENGLISH)
	{
		az[0].checked=true;
		az[1].checked=false;
	}
	else if(M==METRIC)
	{
		az[0].checked=false;
		az[1].checked=true;
	}
};

function hg(gC)
{
	var hD=parseInt(gC);
	for(var i=0;i<=2;i++)
	{
		if(i==hD)
		{
			document.controlPanel.legDraw[i].checked=true;
		}
		else
		{
			document.controlPanel.legDraw[i].checked=false;
		}
	}
};

function bX()
{
	var ay;
	var aI=document.controlPanel.legDraw;
	if(aI[0].checked)
	{
		ay=ca;
	}
	else if(aI[1].checked)
	{
		ay=fo;
	}
	else if(aI[2].checked)
	{
		ay=gI;
	}
	return ay;
};

function hd(ad,ab,gf)
{
	var ay=false;
	if((!ad)&&(!ab)&&(gf>0))
	{
		var aI=document.controlPanel.legDraw;
		if(aI[0].checked||aI[1].checked)
		{
			ay=true;
		}
	}
	return ay;
};

function ai()
{
	var aA;
	var az=document.controlPanel.units;
	if(az[0].checked)
	{
		aA=ENGLISH;
	}
	else if(az[1].checked)
	{
		aA=METRIC;
	}
	return aA;
};

function dv(type)
{
	var aA=ai();
	var ag;
	if(type==eo)
	{
		if(aA==METRIC) {ag=1.609345;}
		else {ag=1.0;}
	}
	else if(type==WEIGHT)
	{
		if(aA==METRIC) {ag=0.45359237;}
		else {ag=1.0;}
	}
	else if(type==dp)
	{
		if(aA==METRIC) {ag=0.3048;}
		else {ag=1.0;}
	}
	return ag;
};

function cl(cZ)
{
	var ag=dv(dp);
	return cZ*ag;
};

function aw(gM)
{
	return Math.round(gM*100)/100;
};

function al(cZ)
{
	var ag=dv(eo);
	return cZ*ag;
};

function toggleMarkers(bb)
{
	if(bb==SHOW)
	{
		bJ=true;
		document.getElementById('markerSwitch').innerHTML='<a class="linkfettblau" href="javascript:toggleMarkers(HIDE);">km/mi-Markierung aus</a>';
	}
	else if(bb==HIDE)
	{
		bJ=false;
		document.getElementById('markerSwitch').innerHTML='<a class="linkfettblau" href="javascript:toggleMarkers(SHOW);">km/mi-Markierung ein</a>';
	}
	bz();
	aq(o);
};

function toggleCalorieCounter(bb)
{
	if(bb==SHOW)
	{
		document.getElementById('calorieCounterSwitch').innerHTML='<a class="linkfettblau" href="javascript:toggleCalorieCounter(HIDE);">Kalorien Rechner aus</a>';
		if(cY)
		{
			document.getElementById('weightRow').style.display='block';
			document.getElementById('calorieRow').style.display='block';
		}
		else
		{
			document.getElementById('weightRow').style.display='table-row';
			document.getElementById('calorieRow').style.display='table-row';
		}
	}
	else if(bb==HIDE)
	{
		document.getElementById('calorieCounterSwitch').innerHTML='<a class="linkfettblau" href="javascript:toggleCalorieCounter(SHOW);">Kalorien Rechner ein</a>';
		document.getElementById('weightRow').style.display='none';
		document.getElementById('calorieRow').style.display='none';
	}
};

function hl(M)
{
	if(M!=by)
	{
		var aP=document.controlPanel.weight.value;
		var bU;	//-->

		if(ai()==METRIC)
		{
			bU=parseFloat(aP)*.45359237;	//-->
		}
		else
		{
			bU=parseFloat(aP)*2.20462262;
		}

		document.controlPanel.weight.value=bU;by=ai();
	}
};


function handleUnitToggle(M)
{
	hl(M);
	eC(M);
	bz();
	aq(o);
	elevationSwitch(bg)
};

function eC(M)
{
	if(M==METRIC)
	{
		document.getElementById("dstUnits1").innerHTML="<b>km</b>";
		document.getElementById("dstUnits2").innerHTML="<b>km</b>";
		document.getElementById("wtUnits").innerHTML="kg";
	}
	else if(M==ENGLISH)
	{
		document.getElementById("dstUnits1").innerHTML="<b>mi</b>";
		document.getElementById("dstUnits2").innerHTML="<b>mi</b>";
		document.getElementById("wtUnits").innerHTML="lb";
	}
	eP();
};

function eD(M)
{
	if(M!=ai())
	{
		hw(M);eC(M);
	}
};

function geoCode()
{
	var bp=document.locationSearch.zoom_level;
	var ge=parseInt(bp[bp.selectedIndex].value);
	//Folgende Zeile ist nicht original!
	document.locationSearch.country.selectedIndex=0;
	if(document.locationSearch.country.selectedIndex==0)
	{
		var gT=new GClientGeocoder();
		var ia=document.getElementById("locationBox").value;
		gT.getLatLng(ia,function(fi){if(!fi)
		{
			alert("Sorry, dieser Ort ist nicht zu finden! Bitte prüfen sie ihre Eingabe und versuchen sie es erneut!");
		}
		else
		{
			map.setCenter(fi,ge);
		}});
	}
	else
	{
		var fc;
		fc=document.getElementById("locationBox").value+','+document.locationSearch.country[document.locationSearch.country.selectedIndex].value;
		var v=GXmlHttp.create();
		v.open("GET","getLoc.php?srch="+fc,true);
		v.onreadystatechange=function(){if(v.readyState==4)
		{
			var dP=v.responseText;
			if(dP.length>0)
			{
				var dc=dP.split(',');
				var ac=dc[0];
				var aa=dc[1];
				map.setCenter(new GLatLng(aa,ac),parseInt(bp[bp.selectedIndex].value));
			}
			else
			{
				alert("Sorry, couldn't find that location. Please check your submission and try again.");
			}
		}};
		
		v.send(null);
	}
};

function showCountry()
{
	var hc=document.locationSearch.country;
	hc.style.display='inline';
};

function printMap()
{
	document.getElementById("searchBox").style.display='none';
	document.getElementById("copy").style.display='none';
	document.getElementById("printDone").style.display='block';
	document.getElementById("mapPane").style.left='0';
	window.print();
};

function be()
{
	var aj=document.getElementsByTagName('svg');
	if(aj.length>0)
	{
		H=aj[0].parentNode;
		t=H.innerHTML;
		H.innerHTML='';
		var ao=t.split('</svg>');
		for(var i=0;i<ao.length-1;i++)
		{
			var af=ao[i].toString()+'</svg>';
			var aX=GXml.parse(af);
			var r=aX.documentElement.getAttribute("style");
			aR(af,r);
		}
	}
};

function aR(bd,r)
{
	var v=GXmlHttp.create();
	var result;
	v.open('POST','parseSvg.pl',true);
	v.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	v.onreadystatechange=function(){if(v.readyState==4)
	{
		aK(v.responseText,r);
	}};
	
	v.send('svg='+escape(bd));
};

function aK(bD,r)
{
	H.innerHTML+='<img src="parseSvg.pl?'+bD+'" style="'+r+'">';
};

function printDone()
{
	document.getElementById("printDone").style.display='none';
	document.getElementById("searchBox").style.display='block';
	document.getElementById("copy").style.display='block';
	document.getElementById("mapPane").style.left='30%';
	document.getElementById("mapPane").style.width='70%';
	document.getElementById("mapPane").style.height='96%';
	if((typeof(t)!='undefined')&&(t.length>0))
	{
		H.innerHTML='';
		t='';aL(o);
	}
};


function dV(av,ar)
{
	if(A[ar]==aF)
	{
		A[ar]=cj;
		var v=GXmlHttp.create();
		var result;
		
		v.open('GET','scripts/getElevation.php?x='+av.lat()+'&y='+av.lng(),true);
		v.onreadystatechange=function()
		{
			if(v.readyState==4) {fJ(v.responseText,ar);}
		};
		v.send(null);
	}
};

function cC(aO,ar)
{
	if(aO==aF)
	{
		A[ar]=null;
	}
	else
	{
		A[ar]=parseInt(aO*100)/100;
	}
};

function fJ(aO,ar)
{
	an++;
	if(aO=="-32768")
	{
		cL=true;
		aO="0";
	}
	var fT=parseFloat(aO)*3.2808399;
	A[ar]=parseInt(fT*100)/100;
	aJ();
};

function dY()
{
	if(ai()==METRIC)
	{
		return '62';
	}
	else
	{
		return '100';
	}
};

function fz(aD)
{
	var aZ;
	var bw=0;
	var bl=0;
	var dm=0;
	aZ='';
	var hb=new String(aD);
	var bv=hb.split(";");
	var dZ=50;
	var iJ;
	var cA=new Array(0);
	bu='';
	for(var i=0;i<bv.length;i++)
	{
		var fU=new String(bv[i]);
		var ho=fU.split(",");
		var at=parseFloat(ho[1]);
		if(i==0)
		{
			bw=at;
			bl=at;
			dm=at;
		}
		if(at>bw) {bw=at;}
		if(at<bl) {bl=at;}
		bu=bu+=aw(al(B[i+1]))+','+aw(cl(A[i]))+';';
		if((i==bv.length-1)||((i+1)%dZ==0))
		{
			eK=new String(bu);
			cA.push(eK.substr(0,eK.length-1));
		}
		if((i<bv.length-2)&&((i+1)%dZ==0))
		{
			bu=aw(al(B[i+1]))+','+aw(cl(A[i]))+';';
		}
	}
	var dk=aw(al(B[B.length-1]));
	aZ+='<div style="width:'+(dY()*dk)+'px">';
	for(var C=0;C<cA.length;C++)
	{
		//alert(cA[C]);
		//alert(bg);
		//alert(dY());
		//alert(bl);
		//alert(bw);
		//alert(dm);
		//alert(dk);		
		aZ+='<img style="margin:0px" src="scripts/drawGraph.php?elevDist='+cA[C]+'&graphHeight='+bg+'&pixelsPerUnit='+dY()+'&min='+bl+'&max='+bw+'&start='+dm+'&totalDistance='+dk+'">';
	}
	aZ+='</div>';
	return aZ;
};

function aJ()
{
	var aD=hZ();
	if((A.length>=2)&&(!ew))
	{
		if(an==o.length)
		{
			document.getElementById("elevationChart").innerHTML=((cL)?gn:"")+fz(aD);
		}
		else
		{
			dx=Math.round((an/(o.length-1))*100);
			document.getElementById("elevationChart").innerHTML='<span style="font-family:arial;font-size:10pt">Bitte warten, hole Höhendaten...'+dx+'%</span>';
		}
	}
	else
	{
		document.getElementById("elevationChart").innerHTML=dN;
	}
};

function elevationSwitch(am)
{
	bg=am;
	if(am==0)
	{
		document.getElementById("elevationSwitch0").innerHTML=unlinkElevation0;document.getElementById("elevationSwitch100").innerHTML=linkElevation100;
		document.getElementById("elevationSwitch200").innerHTML=linkElevation200;
		document.getElementById("elevationChart").style.display="none";
		document.getElementById("elevationChart").style.height=am+"px";
		document.getElementById("map").style.height=mapHeight+"px";
	}
	else if(am==100)
	{
		document.getElementById("elevationSwitch0").innerHTML=linkElevation0;
		document.getElementById("elevationSwitch100").innerHTML=unlinkElevation100;
		document.getElementById("elevationSwitch200").innerHTML=linkElevation200;
		document.getElementById("elevationChart").style.display="block";
		document.getElementById("elevationChart").style.height=am+"px";
		document.getElementById("map").style.height=(mapHeight-100)+"px";
	}
	else if(am==200)
	{
		document.getElementById("elevationSwitch0").innerHTML=linkElevation0;
		document.getElementById("elevationSwitch100").innerHTML=linkElevation100;
		document.getElementById("elevationSwitch200").innerHTML=unlinkElevation200;
		document.getElementById("elevationChart").style.display="block";
		document.getElementById("elevationChart").style.height=am+"px";
		document.getElementById("map").style.height=(mapHeight-200)+"px";
	}
	if((am==100)||(am==200))
	{
		window.setTimeout('getElevationsAndDrawGraph()',1);
	}
};

function gN()
{
	cL=false;
	an=0;
	gc=false;
	dU();
};

function getElevationsAndDrawGraph()
{
	dU();
	aJ();
};

function dU()
{
	an=0;
	for(var i=0;i<o.length;i++)
	{
		aH=false;
		if(A[i]==aF) {dV(o[i],i);}
		else if(A[i]==cj) {}
		else {an++;}
	}
	aH=true;
};

function gd()
{
	var cD='';
	for(var i=0;i<A.length;i++)
	{
		cD+=Math.round(A[i]*100);
		if(i<A.length-1)
		{
			cD+='b';
		}
	}
	var hJ="1";
	return bg+'a'+hJ+'a'+cD;
};

function hZ()
{
	var aD='';
	for(i=0;i<A.length;i++)
	{
		aD+=aw(al(B[i+1]))+','+aw(cl(A[i]))+';';
		if((A[i]!=cj)&&(A[i]!=aF))
		{
			ew=false;
		}
	}
	var eA=new String(aD);
	return eA.substring(0,eA.length-1);
};

function bC()
{
	if(cF==false)
	{
		if(aB())
		{	
			var bs=confirm("Your route has unsaved changes. Click OK to save, or cancel to continue without saving.");
			if(bs)
			{
				var O=bt();
				bB('lastRid',O,365);
			}
		}
	}
};

function bt()
{
	var v=GXmlHttp.create();
	v.open("POST","scripts/saveRoute.php",false);
	v.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	v.send(eF());O=v.responseText;
	return O;
};

function as(bF)
{
	var result='';
	var cX=document.cookie.split(';');
	for(var i=0;i<cX.length;i++)
	{
		if(cX[i].indexOf(bF+'=')> -1)
		{
			result=cX[i].substr(cX[i].indexOf('=')+1);
			break;
		}
	}
	return result;
};

function bB(name,value,U)
{
	var T=name+'='+value+';';
	var bM;
	if(U!=0)
	{
		var bH=86400000;
		var J=new Date();
		J.setTime(J.setTime(J.getTime()+(U*bH)));
		T+="expires="+J.toGMTString()+";";
	}
	T+="path=/";document.cookie=T;
};

function bk()
{
	var G=as('lastRid');
	if(aB())
	{
		if(G!='0')
		{
			document.getElementById('autoSaveMessage').innerHTML='<a href="?r='+G+'">Click here</a> to reload route '+G+'.';
		}
	}
};

function aE()
{
	document.getElementById('autoSaveMessage').innerHTML='';
};
	
function aB()
{
	var G=as('lastRid');
	return(G.length>0);
};

var aG;

function jX(message)
{
	if(!aG)
	{
		aG=window.open('','','');
	}
	aG.document.write(message+'<br>');
};

function jW(message)
{
	if(!aG)
	{
		aG=window.open('','','');
	}
	aG.document.write(message);
};

function svgon()
{
	_mSvgEnabled=true;
	_mSvgForced=true;
};