function createXMLHttpRequest() {
	var ua;
	if(window.XMLHttpRequest) {
		try {
			ua = new XMLHttpRequest();
		} catch(e) {
			ua = false;
		}
	} else if(window.ActiveXObject) {
		try {
			ua = new ActiveXObject("Microsoft.XMLHTTP");
		} catch(e) {
			ua = false;
		}
	}
	return ua;
}
var req = createXMLHttpRequest();
var geocoder = null;

function showAdr(which) {
	if(document.getElementById(which).style.display == "none") {
		document.getElementById(which).style.display = "";
	} else {
		document.getElementById(which).style.display = "none";
	}

}

function load() {
	if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("map"));
		map.addControl(new GSmallMapControl());
		map.setCenter(new GLatLng(49, 12), 4);
	}
}

function getHaendler() {
	
	var plz = document.getElementById('plz').value;
    	var name = document.getElementById('haendlername').value;
	var land = document.getElementById('land').value;
	var marke = document.getElementById('haendler_marke').value;  
	var bereich = document.getElementById('bereich').value;    
	//var url = 'lib/class/haendler_ajax.php?action=test'; 
   
	document.getElementById('gm_test').style.display = "block";
	
	var url = 'lib/class/haendler_ajax.php?action=test&plz=' + plz + '&name=' + name + '&land=' + land + '&marke=' + marke + '&bereich=' + bereich;
	req.open('post', url);
	req.onreadystatechange = getHaendlerReq;
	req.send(null);
	
}

function createMarker(point,html) {
  var marker = new GMarker(point);
  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(html);
  });
  return marker;
}

function fillTable() {

	var plz = document.getElementById('plz').value;
    	var name = document.getElementById('haendlername').value;
	var land = document.getElementById('land').value;
	var marke = document.getElementById('haendler_marke').value;  
	var bereich = document.getElementById('bereich').value;
	
    	var url = 'lib/class/haendler_ajax.php?action=fillTable&plz=' + plz + '&name=' + name + '&land=' + land + '&marke=' + marke + '&bereich=' + bereich;
	req.open('post', url);
	req.onreadystatechange = fillTableReq;
	req.send(null); 

}

function fillTableReq() {
    if(req.readyState == 4){
		var antwort = req.responseText;
		var tableContent = antwort.split("{X}");
		document.getElementById('ergebnisTable').innerHTML = tableContent[1];
		document.getElementById('gm_anzahl').innerHTML = 'Es wurden <strong>' + tableContent[0] + '</strong> H&auml;ndler gefunden';   

    }
}
    
function getHaendlerReq() {
	if(req.readyState == 4){
		var antwort = req.responseText;
		geocoder = new Array();
		var coords = antwort.split("%");
		

		if (GBrowserIsCompatible()) {
		   var map = new GMap2(document.getElementById("map"));
		   map.addControl(new GSmallMapControl());
		   
           	point = new Array();
           	details = new Array();
		   marker = new Array();
		   myHtml = new Array();
		 

		   var values = antwort.split("{X}");
		   var centers = values[2].split(",");
		   
		   if(values[1] > 500) {
		   	
		       alert("Es wurden mehr als 500 Händler gefunden.Bitte Suchkriterien einschränken.");
			   document.getElementById('gm_test').style.display = "none";
			   map.setCenter(new GLatLng(0, 0), 2);
			   return false;
			   
		   } else {
		   	
		   	   var bounds = new GLatLngBounds();
		                  
		   	   var maxPoint = new GLatLng(centers[0],centers[2]);
		   	   var minPoint = new GLatLng(centers[1],centers[3]);
		   
			   bounds.extend(maxPoint);
			   bounds.extend(minPoint);
			   
			   var myzoom = map.getBoundsZoomLevel(bounds);
			   
			   var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) /2;
			   var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) /2;
		   
			   if(clat == 0 && clng == 0) {
			   		myzoom = 2;
			   }
			   
			   map.setCenter(new GLatLng(clng, clat), myzoom);
			   
			   
			   var coords = values[3].split("%");
               
			   

		   
            
	           for (i=0;i<coords.length-1;i++) {

	                 /*
					 var coords_detail = coords[i].split("$");
	                 
					 point[i] = new GLatLng(coords_detail[0],coords_detail[1]);
					 marker[i] = createMarker(point[i], coords_detail[2]);
			 
					 map.addOverlay(marker[i]);
					 */
					 //var koordinaten = coords[i].split("$");
					 
					 var coords_detail = coords[i].split("$");
					 var xKo = coords_detail[0];
					 var yKo = coords_detail[1];
					 var text = coords_detail[2];
					 
					 if (!isNaN( parseFloat(yKo))) { // ist eine Zahl
    				   	var point = new GLatLng(xKo,yKo);
    		   			var marker = createMarker(point, text);
			            map.addOverlay(marker);
					 } 
  
	           }
			 
			 document.getElementById('gm_test').style.display = "none";
			 fillTable();  
			   
		   }
   		}
			  
	}
}


  


function showAddress(adress, uid) {

		new GClientGeocoder().getLatLng( adress ,function(point){
		
		    var url = 'lib/class/haendler_ajax.php?action=geocode&uid=' + uid + '&lat=' + point.lng() + '&lng=' + point.lat();
   
			req.open('post', url);
			req.onreadystatechange = showAddressReq;
			req.send(null);
			
		});	
}

function showAddressReq() {
	if(req.readyState == 4){
		var antwort = req.responseText;
        
	}
}

