function addInfoWindowToMarker(marker,info,options){
GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(info,options);});
return marker;
}

function addInfoWindowTabsToMarker(marker,info,options){
	 GEvent.addListener(marker, "click", function() {marker.openInfoWindowTabsHtml(info,options);});
	 return marker;
}

function addPropertiesToLayer(layer,getTile,copyright,opacity,isPng){
	layer.getTileUrl = getTile;
	layer.getCopyright = copyright;
	layer.getOpacity = opacity;
	layer.isPng = isPng;
	return layer;
}

function addOptionsToIcon(icon,options){
	for(var k in options){
icon[k] = options[k];
	}
	return icon;
}

function addCodeToFunction(func,code){
	if(func == undefined)
return code;
	else{
return function(){
		func();
		code();
}
	}
}

function addGeocodingToMarker(marker,address){
	marker.orig_initialize = marker.initialize;
	orig_redraw = marker.redraw;
	marker.redraw = function(force){}; //empty the redraw method so no error when called by addOverlay.
	marker.initialize = function(map){
new GClientGeocoder().getLatLng(address,
				function(latlng){
		if(latlng){
	marker.redraw = orig_redraw;
	marker.orig_initialize(map); //init before setting point
	marker.setPoint(latlng);
		}//do nothing
});
	};
	return marker;
}



GMap2.prototype.centerAndZoomOnMarkers = function(markers) {
	 var bounds = new GLatLngBounds(markers[0].getPoint(),
					markers[0].getPoint());
	 for (var i=1, len = markers.length ; i<len; i++) {
 bounds.extend(markers[i].getPoint());
	 }

	 this.centerAndZoomOnBounds(bounds);
} 

GMap2.prototype.centerAndZoomOnPoints = function(points) {
	 var bounds = new GLatLngBounds(points[0],
					points[0]);
	 for (var i=1, len = points.length ; i<len; i++) {
 bounds.extend(points[i]);
	 }

	 this.centerAndZoomOnBounds(bounds);
} 

GMap2.prototype.centerAndZoomOnBounds = function(bounds) {
	var center = bounds.getCenter();
	this.setCenter(center, this.getBoundsZoomLevel(bounds));
} 

//For full screen mode
function setWindowDims(elem) {
	if (window.innerWidth){
elem.style.height = (window.innerHeight) + 'px;';
elem.style.width = (window.innerWidth) + 'px;';
	}else if (document.body.clientWidth){
elem.style.width = (document.body.clientWidth) + 'px';
elem.style.height = (document.body.clientHeight) + 'px';
	}
}

ManagedMarker = function(markers,minZoom,maxZoom) {
	this.markers = markers;
	this.minZoom = minZoom;
	this.maxZoom = maxZoom;
}

//Add the markers and refresh
function addMarkersToManager(manager,managedMarkers){
	for(var i = 0, length = managedMarkers.length; i < length;i++) {
mm = managedMarkers[i];
manager.addMarkers(mm.markers,mm.minZoom,mm.maxZoom);
	}
	manager.refresh();
	return manager;
}


var INVISIBLE = new GLatLng(0,0); //almost always invisible

if(self.Event && Event.observe){
	Event.observe(window, 'unload', GUnload);
}else{
	window.onunload = GUnload;
}
