HD.util.Geocoder = function(config) {
	this.config = config || {};
	
	this.observers = [];
};

HD.util.Geocoder.prototype = {
	geocode : function(location) {
		this.notifyObservers("geocode_Start");
		
		var cb = this;
		
		var geocodeRequest = {
			location : location
		};
		
		var callMetadata = {
			callback : function(geocodeResponse) {
				var eventName = geocodeResponse.success && geocodeResponse.geocodes != null ? "geocode_Finish" : "geocode_Error";
				
				cb.notifyObservers.call(cb, eventName, geocodeResponse);
			}
		};
		
		GeocoderService.geocode(geocodeRequest, callMetadata);
	}
};

HD.extend(HD.util.Geocoder, [HD.util.Observable]);

HD.register('hd_geocoder', 'HD.util.Geocoder', {version: "1.0", build: "1"});