class GeocodeAddress
{
	private $address;
	private $latitude;
	private $longitude;
	
	private $error;
	private $error_msg;
	
	public function __construct($address) {
		$this->address = $address;
		$this->Geocode();
	}
	
	private function Geocode() {
		$this->error = false;
		$this->error_msg = '';
		
		if(!is_string($this->address))
			die("All addresses must be passed as a string");
		
		$url = sprintf('http://maps.google.com/maps?output=js&q=%s',rawurlencode($this->address));
		
		$_result = false;
		if($_result = file_get_contents($url)) {
			if(strpos($_result, 'errortips') > 1 || strpos($_result,'Did you mean:') !== false) {
				$this->error = true;
				$this->error_msg = 'Unable to geocode this address. Please check the address is correctly formatted';
			}
			
			preg_match('!center:\s*{lat:\s*(-?\d+\.\d+),lng:\s*(-?\d+\.\d+)}!U', $_result, $_match);
			
			$this->latitude = $_match[1];
			$this->longitude = $_match[2];
		}
	}
	
	public function GetLatitude() { 
		if($this->error !== false)
			return 'ERROR : '.$this->error_msg;
		else
			return $this->latitude; 
	}
	
	public function GetLongitude() { 
		if($this->error !== false)
			return 'ERROR : '.$this->error_msg;
		else
			return $this->longitude; 
	}
	public function GetAddress() { return $this->address; }
}