
//zum anpassen:
var ghIconPath = "media/filialfinder/gh_icon.png";			//der Pfad zum Bild des Icons
var ghIcon = createIcon(ghIconPath);	//das Getraenke Hoffmann Icon
var paddinglinks = "5px";  //fuer die Liste der 5 naehesten filialen
var paddingrechts = "5px";

 	//nicht veraendern:
  var map ;		 //das GMap2-Objekt 
  var geocoder;	 //das geocoder objekt von google, zur bestimmung der long/lat werte
  var arrFrom = []; 
  var arrTo = [];                 
  var markers = []; //zum Speichern aller (!) marker, um Referenz zu behalten, falls sie geloescht werden sollen
  var myMarker; //der Eigene-Standort-Marker
  var arrFilialen = [];
  var arrFilInUmgebung =[];
  var side_bar_html = ""; //this variable will collect the html which will eventually be placed in the side_bar
  var divZeitenSelect;

  function load(){
   if (GBrowserIsCompatible()) {
       map = new GMap2(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.enableScrollWheelZoom();
	//Startpunkt festlegen:
	var startpoint = new GLatLng(52.5234051, 13.4113999); //Berlin Alexanderplatz
       map.setCenter(startpoint, 11);  
  
	  // Read the data from adressen.xml
	  GDownloadUrl("adressen.xml", function(doc) {
		var xmlDoc = GXml.parse(doc);       //Analysiert den angegebenen String als XML-Text und liefert eine DOM-Darstellung zurueck
		arrFilialen = xmlDoc.documentElement.getElementsByTagName('filiale');
		for (var i = 0; i < arrFilialen.length; i++) {
		  // attribute der Marker holen:
		  var lat = parseFloat(arrFilialen[i].getAttribute("lat"));
		  var lng = parseFloat(arrFilialen[i].getAttribute("long"));
		  var point = new GLatLng(lat,lng);
		  var str = arrFilialen[i].getAttribute("str");
		  var party = arrFilialen[i].getAttribute("party");
		  var offen = arrFilialen[i].getAttribute("offen");
		  var tel = arrFilialen[i].getAttribute("tel");
		  var arrOpenDays = arrFilialen[i].getElementsByTagName("open")[0].getElementsByTagName("day");
		  
 		  //Oeffnungszeiten dynamisch (aus xml gelesen) in array speichern:
	 		  var arrFilialenTage = arrFilialen[i].getElementsByTagName("open")[0].getElementsByTagName("day"); 
	 		  for (var j=0; j<arrFilialenTage.length;j++){
	 		  	  var arrFilialenTimes = arrFilialenTage[j].getElementsByTagName('time');
		     	  var filialenFrom = arrFilialenTimes[0].getAttribute('from');
		 		  var filialenTo = arrFilialenTimes[0].getAttribute('to');
		 		  //From hinzufuegen:
					if(!arrFrom.contains(filialenFrom)){
						arrFrom.push(filialenFrom);
					}
		 		  //To hinzufuegen:
					if(!arrTo.contains(filialenTo)){
						arrTo.push(filialenTo);
					}	 		  
	 		  } 
 			  
		  // alle (!) Marker erstellen
		  var marker = createMarker(point,'<div style="width:140px;">'+str+'<br />&Ouml;ffnungszeiten:<br />'+tageZuOeffnungszeiten(arrFilialen[i])+'<br />'+tel+'<\/div>');
		  map.addOverlay(marker);
		  markers.push(marker);
		} 
		  //oeffnungszeiten-div positionieren:  (bottom == bottom(map))
		  divZeitenSelect = document.getElementById("zeitenSelect");
		  divZeitenSelect.style.position="absolute";
		  divZeitenSelect.style.top = parseInt(document.getElementById("map").offsetTop) + parseInt(document.getElementById("map").offsetHeight)- parseInt(divZeitenSelect.offsetHeight)+"px";
		  
		  
		// Oeffnungszeiten nun zu den Select-Boxen hinzufuegen (aber diesmal sortiert):
		arrFrom.sort(Numsort); // die beiden Oeffnungszeitenarrays (numerisch) sortieren 
		arrTo.sort(Numsort);
		for(var q=0;q<arrFrom.length;q++){				
			var opti = document.createElement('option');
	    	opti.setAttribute('value',arrFrom[q]);    	
			var txti = document.createTextNode(arrFrom[q]);
			opti.appendChild(txti);
			document.getElementById('fromSelect').appendChild(opti);
		}
		for(var y=0;y<arrTo.length;y++){				
			var opti = document.createElement('option');
	    	opti.setAttribute('value',arrTo[y]);    	
			var txti = document.createTextNode(arrTo[y]);
			opti.appendChild(txti);
			document.getElementById('toSelect').appendChild(opti);
		}
	  });  
}
 else
     document.getElementById("map").innerHTML = "<h1>Ihr Browser ist nicht kompatibel mit Google Maps...</h1>" ;

document.getElementById('cbParty').checked=false; //checkbox 'Partyausstattung' beim reload der Seite auf false setzen
document.getElementById('cbParkplatz').checked=false;
document.getElementById('cbFassbier').checked=false;
//document.getElementById('cbLiefer').checked=false;
}//end load()

/*
function test(){	    
	var arrAdress = new Array();
	arrAdress.push("Kaiserin-Augusta-Allee 88a,10589 Berlin");
	arrAdress.push("Reichsstra�e 36,	14052 Berlin");
	arrAdress.push("Waldstra�e 16 ,12489 Berlin");
	arrAdress.push("Gleimstra�e 54,	10437 Berlin");
	arrAdress.push("Markelstra�e 47, 12163 Berlin");
	arrAdress.push("Sonnenallee 124,12045 Berlin");
	arrAdress.push("Wrangelstra�e 57,10997 Berlin");
	arrAdress.push("Falkenseer Damm 21	13585	Berlin");
	arrAdress.push("Dorfaue 22,14879 Gro�beeren");
	arrAdress.push("Blankenburger Str. 156,	13127 Berlin");
	arrAdress.push("Blankenburger Chaussee 81-82, 13125	Berlin");
	arrAdress.push("Ordensmeister Str. 7-11 ,12099	Berlin");
	arrAdress.push("Gotlandstr. 6-10	,10439 Berlin");
	arrAdress.push("Ernst-Th�lmann-Str. 22,	15374	M�ncheberg");
	arrAdress.push("Hauptstr. 90,	12159	Berlin");
	arrAdress.push("Sch�nerlinder Str. 60,  	13027	Berlin");
	arrAdress.push("Bl�thgenstr. 1,10711 Berlin");
    geocoder = new GClientGeocoder(); 
console.log(arrAdress.length);
    for(var i=0;i<arrAdress.length;i++){
        var x=i;
        console.log(x+": "+arrAdress[x]);
		geocoder.getLatLng( arrAdress[x]+",Deutschland", function(point) {
			if(point)
				console.log(point+"");

		});
    }
}*/

 function getLatLngPoint(str,plz,stadt){	           
       geocoder = new GClientGeocoder(); // geocoder Objekt von google
	geocoder.getLatLng( str+","+plz+" "+stadt+",Deutschland", function(point) {
		if(point)
			alert(str+","+plz+" "+stadt+",Deutschland:   "+point);
		else
			alert(str+","+plz+" "+stadt+",Deutschland:   "+"no point");
	});
 }

	function createIcon(path){
		  ghIcon = new GIcon();
		  ghIcon.image = path;
		  ghIcon.iconSize = new GSize(49, 38);
		  ghIcon.iconAnchor = new GPoint(10, 37);
		  ghIcon.infoWindowAnchor = new GPoint(18, 1);
		  return ghIcon;
	}

  // Marker erstellen und Click-.Event anhaengen
     function createMarker(point,html) {
       var marker = new GMarker(point,ghIcon);
       GEvent.addListener(marker, "click", function() {
         marker.openInfoWindowHtml(html);
       });
       return marker;
     }

	function sortToDistance(standort,filialen){
		  var x, y, tmp;
		  var arrFil = filialen;
		  // bubblesort, bei 5 elementen vertretbar
		  for(x = 0; x < arrFil.length; x++) {
		    for(y = 0; y < (arrFil.length-1); y++) {
		      if(distance(standort,new GLatLng(parseFloat(arrFil[y].getAttribute("lat")),parseFloat(arrFil[y].getAttribute("long")))) > distance(standort,new GLatLng(parseFloat(arrFil[y+1].getAttribute("lat")),parseFloat(arrFil[y+1].getAttribute("long"))))) {
		    	  tmp = arrFil[y+1];
		    	  arrFil[y+1] = arrFil[y];
		    	  arrFil[y] = tmp;
		      }
		    }
		  }
	return arrFil;
	}

	
  function showAddress(str,plz,ort){

	  var count=0;
	  var strBlue ="";
	if(str!="" || plz!="" || ort!=""){  //falls alle 3 leer sind, wuerde trotzdem (die Mitte von) Deutschland gefunden werden, da Deutschland hart codiert, s.u.
		geocoder = new GClientGeocoder(); // geocoder Objekt von google
		geocoder.getLatLng( str+","+plz+" "+ort+",Deutschland", function(point) {
			if(point){
				if(myMarker) map.removeOverlay(myMarker);//damit der Eigene-Standort-Marker nicht mehrfach auf die Karte gezeichnet wird (Schatten wird immer dunkler)
				myMarker = new GMarker(point);
				GEvent.addListener(myMarker, "click", function() {
					myMarker.openInfoWindowHtml("mein Standort");
				});
				map.addOverlay(myMarker);
				arrFilInUmgebung = filalenInUmgebung(point,document.getElementById('cbParty').checked,document.getElementById('cbParkplatz').checked,document.getElementById('cbFassbier').checked,/*document.getElementById('cbLiefer').checked*/false);
				arrFilInUmgebung = sortToDistance(point,arrFilInUmgebung);
				//zur sidebar hinzufuegen:
				side_bar_html+="<table id='sideBarTable' class='listTable' style='margin-top:15px''>";
				side_bar_html+="<tr style='font-weight:bold;white-space:nowrap;'><th style='width:100%;padding-left:"+paddinglinks+";padding-right:"+paddingrechts+";'>"+arrFilInUmgebung.length+"&nbsp;Getr&auml;nke&nbsp;Hoffmann&nbsp;Filialen&nbsp;in&nbsp;der&nbsp;N&auml;he&nbsp;Ihres&nbsp;Standortes</th><th style='width:320px;padding-left:"+paddinglinks+";padding-right:"+paddingrechts+";'>&Ouml;ffnungszeiten</th><th style='width:0px;padding-left:"+paddinglinks+";padding-right:"+paddingrechts+";'>Telefon</th><th style='width:0px;padding-left:"+paddinglinks+";padding-right:"+paddingrechts+";'>Parkpl&auml;tze</th><th style='width:0px;padding-left:"+paddinglinks+";padding-right:"+paddingrechts+";'>Entfernung</th></tr>";
/*
 * side_bar_html+="<tr class='white' style='font-weight:bold;white-space:nowrap;'><th style='width:280px'>Adresse</th><th style='width:320px'>&Ouml;ffnungszeiten</th><th style='width:120px'>Telefon</th><th style='width:90px'>Parkpl&auml;tze</th><th style='width:90px'>Entfernung</th></tr>";
 */


				for(var x=0;x<arrFilInUmgebung.length;x++){
					if (count%2==0)strBlue="class='even'"; //um die Tabellenzeilen abwechselnd einzufaerben
					else strBlue="class='uneven'";
		            side_bar_html += "<tr "+strBlue+" style='cursor:pointer;white-space:nowrap;' onClick='markerClick("+x+");'><td>" + arrFilInUmgebung[x].getAttribute("str")+", "+arrFilInUmgebung[x].getAttribute("plz")+" "+arrFilInUmgebung[x].getAttribute("ort")+"</td><td style='white-space:nowrap'>"+tageZuOeffnungszeiten(arrFilInUmgebung[x])+"&nbsp;&nbsp;</td><td style='white-space:nowrap;'>"+arrFilInUmgebung[x].getAttribute("tel")+"&nbsp;&nbsp;</td><td style='white-space:nowrap'>"+arrFilInUmgebung[x].getAttribute("parken")+"</td><td style='white-space:nowrap'>"+(runden(parseInt(distance(point,new GLatLng(parseFloat(arrFilInUmgebung[x].getAttribute("lat")),parseFloat(arrFilInUmgebung[x].getAttribute("long")))))/1000,2)+"").replace('.',',')+" km"+ "</td></tr>";
					count++;
				}
			    side_bar_html+="</table>";
				//side_bar ins div schreiben:
				document.getElementById("side_bar").innerHTML = side_bar_html;
				side_bar_html=""; //reset	

				//zoomfaktor der map bestimmen:				
				  map.setZoom(getZoomFactor(getMaxDist(point)/1000));
				  map.setCenter(point);

				//Hintergrundfenster austauschen
				var objBgContentWindow = document.getElementById('bg_content_window');
				if (objBgContentWindow != null)
				{
					objBgContentWindow.style.width = '964px';
					objBgContentWindow.style.height = '554px';
					objBgContentWindow.style.src = 'media/windows/window_broad_high_blue.png';
				}
				  					           
			}				
			else
				alert("Keine Adresse gefunden fuer: "+str+","+plz+" "+ort+",Deutschland");
		});
	}
  }

  	function removeMarkerFromMarkers(marker){ //entfernt 'marker' aus dem array markers, falls vorhanden
		markers.remove(marker);
  	}

	function markerBelongsToFiliale(marker, filiale){ //Funktion um vom einem marker wieder auf die Filiale zurueckschliessen zu koennen
		var latlngPointMarker = marker.getLatLng();
		var lat = parseFloat(filiale.getAttribute("lat"));
		var lng = parseFloat(filiale.getAttribute("long"));
		var latlngPointFiliale =  new GLatLng(lat,lng);
		if (latlngPointMarker.x == latlngPointFiliale.x && latlngPointMarker.y == latlngPointFiliale.y)
			return true
		return false;
	}

  
  function deleteAllMarkers(){
	for(var i=0;i<markers.length;i++){
		map.removeOverlay(markers[i]);
	}
	markers=[]; //alle marker loeschen
  }

  function showMarkers(){ //zeigt alle Marker an, die ueber die Filter ausgewaehlt wurden (kombiniert die Filter)
	  var partyChecked = document.getElementById('cbParty').checked;		//Bool
	  var parkplatzChecked = document.getElementById('cbParkplatz').checked;		//Bool
	  var fassbierChecked = document.getElementById('cbFassbier').checked;		//Bool
	  //var liefernChecked = document.getElementById('cbLiefer').checked;		//Bool


		//fuer die Oeffnungszeiten:
		var tag = document.getElementById('daySelect').value;
		var von = document.getElementById('fromSelect').value;
		var bis = document.getElementById('toSelect').value;
		if(von=="") von = 24;	//"egal"
		if(bis=="") bis = 1;    //"egal"
		
		deleteAllMarkers();
		for(var i=0;i<arrFilialen.length;i++){

			
		    // hat Partyaussattung usw?
			if((!partyChecked || hatPartyausstattung(arrFilialen[i]))  &&   (!parkplatzChecked || hatParkplaetze(arrFilialen[i]))   &&   (!fassbierChecked ||  hatFassbier(arrFilialen[i])) /*&&  (!liefernChecked || hatLieferservice(arrFilialen[i]))*/){
				//hat die Filiale auch offen? :
				var arrOpenDays = arrFilialen[i].getElementsByTagName("open")[0].getElementsByTagName("day");
				for(var j =0;j<arrOpenDays.length;j++){
					var arrOpenTimes = arrOpenDays[j].getElementsByTagName('time');
					for(var u=0;u<arrOpenTimes.length;u++){
						//alert(arrOpenDays[j].getAttribute('name')+","+arrOpenTimes[u].getAttribute('from')+","+arrOpenTimes[u].getAttribute('to'));
						if(((tag == arrOpenDays[j].getAttribute('name')|| tag=="")) &&  (parseFloat(arrOpenTimes[u].getAttribute('from')) <= von)&& (parseFloat(arrOpenTimes[u].getAttribute('to')) >= bis)){
							 //Filiale arrFilialen[i] hat im gesuchten Zeitraum geoeffnet
								var lat = parseFloat(arrFilialen[i].getAttribute("lat"));
							    var lng = parseFloat(arrFilialen[i].getAttribute("long"));
							    var point = new GLatLng(lat,lng);
							    var str = arrFilialen[i].getAttribute("str");
							    var party = arrFilialen[i].getAttribute("party");
							    var offen = arrFilialen[i].getAttribute("offen");
							    var tel = arrFilialen[i].getAttribute("tel");
								//zur map hinzufuegen:
								// Marker erstellen
								var marker = createMarker(point,'<div style="width:140px">'+str+'<br />&Ouml;ffnungszeiten:<br />'+tageZuOeffnungszeiten(arrFilialen[i])+'<br />'+tel+'<\/div>');
								map.addOverlay(marker);
								markers.push(marker);
								
						}
					
					}
					if(tag=="") break;
				}
			}
		}		

  }
  

  function hatPartyausstattung(filiale){
	  var party = filiale.getAttribute("party");
	  return party!="";
  }

  function hatParkplaetze(filiale){
	  var plaetze = filiale.getAttribute("parken");
	  return plaetze>0;
  }

  function hatFassbier(filiale){
	  var bier = filiale.getAttribute("fassbier");
	  return bier!="";
  }

  function hatLieferservice(filiale){
	  var liefern = filiale.getAttribute("liefern");
	  return liefern!="";
  }

  //party,parken,fassbier,liefer :: bool
  function filalenInUmgebung(standort,party,parken,fassbier,liefer){
	  
  	var tag = document.getElementById('daySelect').value;
	var von = document.getElementById('fromSelect').value;
	var bis = document.getElementById('toSelect').value;
	if(von=="") von = 24;	//"egal"
	if(bis=="") bis = 1;    //"egal"
	
	var arrFilialenInUmgebung = [];
	var c=0;
	var index =0;
	for(var i=0;i<arrFilialen.length;i++){
	/*	for(var x=0;x<arrFilialenInUmgebung.length;x++){
			console.log(x+": "+arrFilialenInUmgebung[x].getAttribute("str")+"     "+distance(standort,new GLatLng(parseFloat(arrFilialenInUmgebung[x].getAttribute("lat")),parseFloat(arrFilialenInUmgebung[x].getAttribute("long")))));
		}*/
		//erstmal filtern:
		if((!party || hatPartyausstattung(arrFilialen[i]))  &&   (!parken || hatParkplaetze(arrFilialen[i]))   &&   (!fassbier ||  hatFassbier(arrFilialen[i])) &&  (!liefer || hatLieferservice(arrFilialen[i]))){
			
			//hat die Filiale auch offen? :
			var arrOpenDays = arrFilialen[i].getElementsByTagName("open")[0].getElementsByTagName("day");
			for(var j =0;j<arrOpenDays.length;j++){
				var arrOpenTimes = arrOpenDays[j].getElementsByTagName('time');
				for(var u=0;u<arrOpenTimes.length;u++){
					//alert(arrOpenDays[j].getAttribute('name')+","+arrOpenTimes[u].getAttribute('from')+","+arrOpenTimes[u].getAttribute('to'));
					if(((tag == arrOpenDays[j].getAttribute('name') || tag=="")) &&  (parseFloat(arrOpenTimes[u].getAttribute('from')) <= von)&& (parseFloat(arrOpenTimes[u].getAttribute('to')) >= bis)){
						
							if (arrFilialenInUmgebung.length<5) {
								arrFilialenInUmgebung.push(arrFilialen[i]);
							}
							else{
								//groessten index rausfinden:
									for(var u=0;u<arrFilialenInUmgebung.length;u++){
										if(distance(standort,new GLatLng(parseFloat(arrFilialenInUmgebung[u].getAttribute("lat")),parseFloat(arrFilialenInUmgebung[u].getAttribute("long")))) > c){
											c = distance(standort,new GLatLng(parseFloat(arrFilialenInUmgebung[u].getAttribute("lat")),parseFloat(arrFilialenInUmgebung[u].getAttribute("long"))));
											index = u;
										}
									}
									c=0;
								/*	console.log("groesste Entfernung: "+arrFilialenInUmgebung[index].getAttribute("str"));		
									console.log("\n");	*/
								
								for(var j=0;j<arrFilialenInUmgebung.length;j++){
									if(distance(standort,new GLatLng(parseFloat(arrFilialenInUmgebung[index].getAttribute("lat")),parseFloat(arrFilialenInUmgebung[index].getAttribute("long")))) > distance(standort,new GLatLng(parseFloat(arrFilialen[i].getAttribute("lat")),parseFloat(arrFilialen[i].getAttribute("long")))))
										arrFilialenInUmgebung[index] = arrFilialen[i];
								}
							}
					}
				}
			}
		}
	}
	return arrFilialenInUmgebung;
  }
  
  function findHighestDistance(point,arr){
	var fil;
	var dist=0;
	if (parseInt(point.distanceFrom(new GLatLng(parseFloat(arr[i].getAttribute("lat")),parseFloat(arrFilialen[i].getAttribute("long"))))));
  }
  
  function distance(point1,point2){ //param: 2 Punkte vom Typ GLatLng, returns: entfernung in metern
	return parseInt(point1.distanceFrom(point2));
  }
  

  //fuer die sidebar:
  function markerClick(index) { // es wird nur der index uebergeben undm nicht die filiale selbst, da objekte nicht als string uebergeben werden koennen
	  for(var i=0;i<markers.length;i++){
		if(markerBelongsToFiliale(markers[i], arrFilInUmgebung[index])){
			map.setCenter(markers[i].getPoint(),14); //angeklickte Filiale in Focus stellen und ranzoomen
			break;
		}
	  }
      
   }


  function tageZuOeffnungszeiten(filiale){
	  var arrOpenDays = filiale.getElementsByTagName("open")[0].getElementsByTagName("day");
	  var tmpStr = arrOpenDays[0].getAttribute("name");
	  var oldFrom = arrOpenDays[0].getElementsByTagName("time")[0].getAttribute("from");
	  var oldTo = arrOpenDays[0].getElementsByTagName("time")[0].getAttribute("to");

	  if(arrOpenDays.length >0) //falls arrOpenDays leer darf kein Fehler kommen	
	  for(var i =1;i<arrOpenDays.length;i++){
		if((arrOpenDays[i].getElementsByTagName("time")[0].getAttribute("from") != oldFrom) || (arrOpenDays[i].getElementsByTagName("time")[0].getAttribute("to") != oldTo) ){
			if(tmpStr.slice(tmpStr.length-2) != arrOpenDays[i-1].getAttribute("name"))
				tmpStr+="-"+arrOpenDays[i-1].getAttribute("name")+"&nbsp;"+arrOpenDays[i-1].getElementsByTagName("time")[0].getAttribute("from")+"-"+arrOpenDays[i-1].getElementsByTagName("time")[0].getAttribute("to")+",&nbsp;"+arrOpenDays[i].getAttribute("name");
			else
				tmpStr+="&nbsp;"+arrOpenDays[i-1].getElementsByTagName("time")[0].getAttribute("from")+"-"+arrOpenDays[i-1].getElementsByTagName("time")[0].getAttribute("to")+",&nbsp;"+arrOpenDays[i].getAttribute("name");
			oldFrom = arrOpenDays[i].getElementsByTagName("time")[0].getAttribute("from");
			oldTo = arrOpenDays[i].getElementsByTagName("time")[0].getAttribute("to");
			if(i == arrOpenDays.length-1) 
				tmpStr+="&nbsp;"+arrOpenDays[i].getElementsByTagName("time")[0].getAttribute("from")+"-"+arrOpenDays[i].getElementsByTagName("time")[0].getAttribute("to");
		}
		else{ //gleiche oeffnungszeiten = weitermachen
			if(i == arrOpenDays.length-1)//falls ende
				tmpStr+="-"+arrOpenDays[i].getAttribute("name")+"&nbsp;"+arrOpenDays[i].getElementsByTagName("time")[0].getAttribute("from")+"-"+arrOpenDays[i].getElementsByTagName("time")[0].getAttribute("to");
		}
	  }
	return tmpStr;
  }

  function runden(kommazahl,nachkommastellen){ //rundet die 'kommazahl' auf 'nachkommastellen' Stellen
	var tmp = kommazahl;
	tmp = tmp*10*nachkommastellen;
	tmp = Math.round(tmp);
	tmp = tmp/(10*nachkommastellen);
	return tmp;
  }
  /* Beziehung Zoomfaktor <-> Entfernung (in km,ca.) bei Kartenbreite von 590px:
  					14			3
  					13			6
  					12			13
  					11			26
  					10			53
  					 9			107
  					 8			214
  					 7			433
  					 6			866	
  					 5			1732  
  */
  
  function getZoomFactor(max_dist){ //max_dist in km //ermittelt den zoomfaktor, der benoetigt wird, wenn der standort in der mitte der karte ist und mind. 5 Filialen engezeigt werden sollen
	var double_dist = max_dist*2;
	var zoomfactor = 14;
	var min_dist = 1.5; //km
	while(double_dist>2*min_dist){
		min_dist*=2;
		zoomfactor-=1;
	}
	return zoomfactor; 
  }
  function getMaxDist(standort){  //gibt die entfernung zurueck, die in arrFilInUmgebung die weiteste Entfernung zum standort hat (in Metern!)
		var c=0;
		for(var i=0;i<arrFilInUmgebung.length;i++){
			var entfernung = distance(standort,new GLatLng(parseFloat(arrFilInUmgebung[i].getAttribute("lat")),parseFloat(arrFilInUmgebung[i].getAttribute("long"))));
			if( entfernung > c){
				c = entfernung;
			}
		}	  
		return c; // Entfernung in m
  }

	  
