function GMapController() {
	this.aMaps = new Array();
}
	GMapController.prototype.reAddress = /Address: '([^']+)'/;
	GMapController.prototype.reCompany = /Company: '([^']+)'/;
	GMapController.prototype.initMap = function(oElem) {
		var sArgs = oElem.title;
		var sID   = oElem.id;
		aAddress = sArgs.match(this.reAddress);
		if(aAddress.length < 2)
			return(false);
		sAddress = aAddress[1];
		aCompany = sArgs.match(this.reCompany);
		if(aCompany.length < 2)
			return(false);
		sCompany = aCompany[1];
		this.aMaps[sID] = new GoogleMap(oElem, sAddress, sCompany);
		this.aMaps[sID].draw();
	}
	
function GoogleMap(oElem, sAddress, sCompany) {
	this.oElem    = oElem;
	this.sAddress = sAddress;
	this.sCompany = sCompany;
	this.oMap     = new GMap2(this.oElem);
	this.oMap.addControl(new GSmallMapControl());
	this.oMap.addControl(new GMapTypeControl());
	this.oCoder   = new GClientGeocoder();
}
	GoogleMap.prototype.draw = function() {
		var oSelf = this;
		this.oCoder.getLatLng(this.sAddress,
    		function(point) {
      			if (!point) {
        			//alert(address + " not found");
      			} else {
        			oSelf.oMap.setCenter(point, 13);
        			var marker = new GMarker(point);
        			oSelf.oMap.addOverlay(marker);
					var sHTML = "<h3>" + oSelf.sCompany + "</h3>" + oSelf.sAddress;
        			marker.openInfoWindowHtml(sHTML);
      			}
    		}
  		);
	}

function GMapsInit() {
	aElems = fGEOBJLI('div', 'googlemap');
	for(i in aElems) {
		if(isnumeric(i))
    		oGMapController.initMap(aElems[i]);
	};
}
	
var oGMapController = new GMapController();
WindowOnload(GMapsInit);