function geocode(plz,city,street,hno,callbackfkt,id){
	var geocoder = new Map24.GeocoderServiceStub();
	var adress= new Map24.WebServices.Address();
	adress.ZIP=Map24.trim(plz);
	adress.City=Map24.trim(city);
	adress.Street=Map24.trim(street);
	adress.HouseNo=Map24.trim(hno);
	adress.State="Sachsen";
	adress.Country="DE";
	// becaus the beta 2.0.27 has an error
	var adressText=adress.ZIP+" "+adress.City+" "+adress.Street+" "+adress.HouseNo;
	geocoder.geocode( { SearchText: Map24.trim( adressText ), MaxNoOfAlternatives: 10, CallbackFunction: filterLocations , CallbackParameters:{Adress: adress, ID:id, CBFkt: callbackfkt}, Country: adress.Country, State: adress.State } );
}

function filterLocations( locs, _params ){
	if(locs.length<1)
	{
		/*var loc=new Map24.Location({
			Longitude: 0,
			Latitude: 0,
			});
		loc.setZip(_params.Adress.ZIP);*/
		_params.CBFkt(0);
		
		//printResult(loc,_params.Umkreis,_params.Adress);
		return;
	}
	// plz filtern
	if(_params.Adress.ZIP.length>0 && locs.length>1)
		locs=filterZIP(locs,_params.Adress.ZIP);

	// straße filtern
	if(_params.Adress.Street.length>0 && locs.length>1)
		locs=filterStreet(locs,_params.Adress.Street);
		
	// hausnummer filtern
	if(_params.Adress.HouseNo.length>0 && locs.length>1)
		locs=filterHouseNo(locs,_params.Adress.HouseNo);
		
	// ergebnissfunktion aufrufen
	_params.CBFkt(locs,_params.ID,_params.Adress);
}

function filterZIP(locs, zip){
	var withZIP=new Array();
	for(var i=0;i<locs.length;i++)
	{
		// richtige ZIP
		if(locs[i].getZip()!=zip) continue;
		
		// eintrag im array speichern
		withZIP.push(locs[i]);
	}
	
	return withZIP;
}

function filterStreet(locs, street){
	var withStreet=new Array();
	street=street.toLowerCase();
	for(var i=0;i<locs.length;i++)
	{
		// richtige straße
		var loc_street=locs[i].getStreet().toLowerCase();
		var pos=loc_street.indexOf(street, 0);
		if(pos==-1) continue;
		
		// Hausnummer filtern
		var hno=loc_street.substr(pos+street.length);
		locs[i].setHouseNo(Map24.trim(hno));
		
		// eintrag im array speichern
		withStreet.push(locs[i]);
	}
	
	// testen ob noch was da
	if(withStreet.length<1)
		withStreet.push(locs[0]);
	
	return withStreet;
}

function filterHouseNo(locs, hno){
	var withHno=new Array();
	for(var i=0;i<locs.length;i++)
	{
		if(locs[i].getHouseNo()!=hno) continue;
		// eintrag im array speichern
		withHno.push(locs[i]);
	}
	
	// keine einräge da? -> altes array zurückgeben
	if(withHno.length<1) return locs
	// sonst das neue array zurückgeben
	return withHno;
}

