/*
 * JS Funktion f�r H�ndlerdatenbank
 * 
 * ben�tigt jquery > 1.3
*/

function umkreissuche(INIT) {
	    
		 var PLZ = J('#frm_plz').attr('value');
		 var ORT = J('#frm_ort').attr('value');
		 var L = J('#L').attr('value');
		 var LAND = J('#land option:selected').text();
		 var LANDID = J('#land option:selected').attr('value');
		 if(INIT=='1') {
			 var GRENZEN = 1;
			 var DIS = 10000;
		 } else {
			 var GRENZEN = J('#frm_grenzen:checked').attr('value');
			 var DIS = J('#frm_dis option:selected').attr('value');
			 if(DIS=='1000') {
				 alert('Umkreis nicht angegeben.');
				 return false;
			 }
		 }
		 
		 var GMSEARCH = " "+PLZ+" "+LAND+" "+ORT;

		 var plzToCode = new GClientGeocoder ();
		
		 plzToCode.getLatLng(GMSEARCH, function(cords) {

				 if(!cords) {
					 var ajxReq = printError(1);
				 } else {
					 var LAT = cords.lat();
					 var LNG = cords.lng();
					 var ajxReq = umkreisRequest(cords.lat(),cords.lng(),LANDID,GRENZEN,DIS,L);
				 }
			 });
		 return false;
}

function printError(CODE) {
	J.ajax({
		  type: "GET",
		  url: "index.php",
		  data: "eID=gmxml&error="+CODE+"&mode=error",
		  success: function(data){
		    J('#liste').html(data);
		}
	});
}

function umkreisRequest(LAT,LNG,LANDID,GRENZEN,DIS,L) {

		J.ajax({
			  type: "GET",
			  url: "index.php",
			  data: "eID=gmxml&lat="+LAT+"&lng="+LNG+"&dis="+DIS+"&landid="+LANDID+"&grenzen="+GRENZEN+"&mode=list&L="+L,
			  success: function(data){
			    J('#liste').html(data);

				var map = new GMap2(document.getElementById("map"));
				map.setMapType(G_PHYSICAL_MAP);

				GDownloadUrl("index.php?eID=gmxml&lat="+LAT+"&lng="+LNG+"&dis="+DIS+"&landid="+LANDID+"&grenzen="+GRENZEN+"&L="+L, function(data, responseCode) {

						if(data) {
							var xml = GXml.parse(data);
							

							var markers = xml.documentElement.getElementsByTagName("marker");
							var bounds = new GLatLngBounds();
							function createMarker(point,html,a) {
								var marker = new GMarker(point);
								var eleId = markers[a].getElementsByTagName("linkid")[0].firstChild.data;
								
								GEvent.addDomListener(
										document.getElementById(markers[a].getElementsByTagName("linkid")[0].firstChild.data),
						                'click',
						                function(e)
						                {
										    map.setZoom(12);
										    map.panTo(point);
											marker.openInfoWindow(html);
						                }
						        );
						        GEvent.addListener(
						                marker,
						                'click',
						                function(e,eleID)
						                {
						                	marker.openInfoWindow(html);
						                }
						        );					
						        GEvent.addListener(
						                marker,
						                'mouseover',
						                function(e,eleID)
						                {
						                	J('#D'+eleId).addClass('gm-xml-ajaxrow-aktiv');
						                }
						        );					
						        GEvent.addListener(
						                marker,
						                'mouseout',
						                function(e)
						                {
						                	J('#D'+eleId).removeClass('gm-xml-ajaxrow-aktiv');
						                }
						        );					
							return marker;
						  }
						  var a = 0;
						  for (var i = 0; i < markers.length; i++) {
							
						    var point = new GLatLng(parseFloat(markers[i].getElementsByTagName("lat")[0].firstChild.data),
						                            parseFloat(markers[i].getElementsByTagName("lng")[0].firstChild.data)
						    );
						    bounds.extend(point);
						    var html = markers[i].getElementsByTagName("html")[0].firstChild.data;
						    map.addOverlay(createMarker(point,html,a));
						    a++;
						  }
						  
					    map.setCenter(new GLatLng(LAT, LNG), 6);
						var customUI = map.getDefaultUI();
						map.addControl(new GMapTypeControl());
						map.setUI(customUI);

						  if(i>0){
							  map.setZoom(map.getBoundsZoomLevel(bounds));
							  map.setCenter(bounds.getCenter());
						  }
							

						} else {
							 var ajxReq = printError(2);
							 return false;
						}
				});	
		
		
		
		}
			});

} 
 
