var http = createRequestObject();
function createRequestObject() {
   var objAjax;
   var browser = navigator.appName;
   if(browser == "Microsoft Internet Explorer"){
      objAjax = new ActiveXObject("Microsoft.XMLHTTP");
   }else{
      objAjax = new XMLHttpRequest();
   }
   return objAjax;
}

//Ruft im Hintergrund eine PHP Seite auf 
function changePOIAjax(id,spezial,l){
   //removeMarkers(poimarkers);
   http.open('POST','getpoi.php');
   // Für POST Variablen muss der Header geändert werden!
   http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
   http.onreadystatechange = fSetPOIAjax;
   http.send("id="+id+"&spezial="+spezial+"&l="+l);
   
   return false;
}

//Ausgabefunktion wird bei jedem Statuswechsel aufgerufen
function fSetPOIAjax(){
   if(http.readyState == 4){
      var returnValue = http.responseText.toString();
      var lines = new Array();
      lines = returnValue.split("%%");
      for(i=0;i<(lines.length-1);i++)
      {
      	data = lines[i].split("#");
	      var lat = document.getElementById("lat").value;
		  	var lon = document.getElementById("lon").value;
	      
	      if (((lat == "") && (lon == "")) || (map.getZoom() <= 12))
				{
					lat = data[0];
					lon = data[1];
				}
								
			  if (getKilometers(new GLatLng(data[0],data[1]),new GLatLng(lat,lon)) <= (data[2]/1000)) {
				var lat = data[0];
				var lon = data[1];
				var mark = fMarkerIsset(poimarkers, lat, lon);
				var point = new GLatLng(lat,lon);
				/*
				pmarker = createMarker(point, data[3], data[4], data[5],"");
				poimarkers.push(pmarker);
				map.addOverlay(pmarker);
				*/
				if (mark == -1){
					        //createMarker(point, ptyimg,  text,                                    img,     aDesc, linie) {
					pmarker = createMarker(point, data[3], data[6] + "#" + data[4] + "#" + data[7], data[5], data[8], data[9]);
					poimarkers.push(pmarker);
					map.addOverlay(pmarker);
				} else {
					  map.removeOverlay(poimarkers[mark]);
					  poimarkers.splice(mark,1);
					}
				
				}
      }
   }
}

function convertToRadian(deg){
  return deg / (180/Math.PI);
}

function getKilometers(point1, point2){
	km = getDistanceGeneric(6378.8, point1, point2);
	return km;
}

function getDistanceGeneric(mult, point1, point2){
  point1.xR = convertToRadian(point1.y);
  point1.yR = convertToRadian(point1.x);
  point2.xR = convertToRadian(point2.y);
  point2.yR = convertToRadian(point2.x);
  return mult * (Math.acos(Math.sin(point1.xR) * Math.sin(point2.xR) + Math.cos(point1.xR) * Math.cos(point2.xR) * Math.cos(point2.yR - point1.yR)));
}
