function GoogleMap ( mapdiv, startingpoint, startingzoom, directionsinputdiv, directionsresultsdiv ) {
    this.currentSelected = startingpoint;
    GoogleMap.prototype.render = function() {

        if (GBrowserIsCompatible()) {
             this.map = new GMap2(mapdiv);
             this.map.addControl(new GSmallMapControl());
             this.map.setCenter(startingpoint,startingzoom); 
             var panel= directionsresultsdiv;
	     this.gdir = new GDirections(this.map, panel);
      
        }

   }

   // add a point to an existing map using a String "latitude,longitude ", and an optional bit of HTML to render in the popup when clicked
   GoogleMap.prototype.addPointByLatLongString = function(latlngString, infotext) {
//	alert(latlngString);
	var point = latlongStringToPoint(latlngString);
	var marker = new GMarker(point);
				
	this.map.addOverlay(marker);
	if ( infotext ) {
		marker.bindInfoWindowHtml(infotext);
	}
        var gmap = this;
	GEvent.addListener(marker, "click", function(latlng) {
		gmap.currentSelected = point;
	        gmap.map.setCenter(startingpoint,startingzoom); 
		if ( directionsinputdiv ) {
			gmap.showDirections(directionsinputdiv.value);
		}
	});
   }
   GoogleMap.prototype.showDirections = function(fromval) {
      	if ( !fromval) {
 		alert("Please enter your postcode and select a car park");
	} else {
                var gmap = this;
		usePointFromPostcode(fromval, function (frompoint){
		   	gmap.gdir.load(frompoint.lat() +"," + frompoint.lng() +" to " + gmap.currentSelected.toUrlValue(6));

		});
	}
   }

}



// util functions
// given a string containing a comma separated "latitude, longitude", return a Gmap Point object
function latlongStringToPoint (latlongstring) {
	var latlng = latlongstring.split(",");
	var point = new GLatLng(latlng[0],latlng[1]);
	return point;

}


