function googlemaps_addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') window.onload = func;
	else window.onload = function() {
		oldonload();
		func();
	}
}

function googlemaps_createMarker(point, markerText) {
	var marker = new GMarker(point);
	GEvent.addListener(marker, "click", function() {
		var opts = { maxWidth : 300 };
		marker.openInfoWindowHtml("<div style='width:auto;height:auto'>"+markerText+"</div>", opts );
	});
	return marker;
}

function googlemaps_initMap(el, lat, lon, zoom, om, mtype, text, mapW, mapH, mapControls, mapMarker) {
	if (GBrowserIsCompatible()) {
		var map = new GMap2(el);
		map.setCenter(new GLatLng(lat, lon), parseInt(zoom));
		if (mapControls) {
			if (mapH>=300) map.addControl(new GLargeMapControl());
			else map.addControl(new GSmallMapControl());

			map.addControl(new GMapTypeControl());

			if (om) map.addControl(new GOverviewMapControl());
		}

		switch (mtype) {
			case 'k':
				map.setMapType( G_SATELLITE_MAP );
				break;
			case 'h':
				map.setMapType( G_HYBRID_MAP );
		}

		var point = new GLatLng(lat, lon);

		if (mapMarker) map.addOverlay(googlemaps_createMarker(point, text));
	}
}


function googlemaps_anchorTagSearchReplace() {
	var thekey = googlemaps_googleMapsKey;
	var hrefs = document.getElementsByTagName("a");

	for (x=0; x<hrefs.length; x++) {
		var thehref = hrefs[x];
		var theloc = thehref.href;
		var commands;

		if (googlemaps_useRelAttribute)
			commands=String(thehref.getAttribute('rel'));
		else commands=String(thehref.getAttribute('title'));

		if (theloc.indexOf("http://maps.google.")!=-1 &&
				commands.indexOf("googlemap")!=-1) {
			var pcnt = 0;
			var mapW;
			var mapH;

			mapname = "googlemap-"+x;

			mapW = googlemaps_defaultWidth;
			mapH = googlemaps_defaultHeight;
			mapControls = true;
			mapMarker = true;

			// getting size params from the link title, if present
			paramElements=commands.split(";");

			for (pcnt=0; pcnt<paramElements.length; pcnt++) {
				if (paramElements[pcnt].indexOf("nocontrols")!=-1) mapControls = false;
				else if (paramElements[pcnt].indexOf("nomarker")!=-1) mapMarker = false;
				else if (paramElements[pcnt].indexOf("w:")!=-1) {
					var pars = paramElements[pcnt].split(":");
					mapW=pars[1];
				} else if (paramElements[pcnt].indexOf("h:")!=-1) {
					var pars = paramElements[pcnt].split(":");
					mapH=pars[1];
				}
			}

			mydiv = document.createElement("div");
			mydiv.id = mapname;
			if (thehref.style.cssText) mydiv.style.cssText=thehref.style.cssText;
			else mydiv.style.display = "block";

			if (mydiv.style.width  == 0) mydiv.style.width  = mapW+"px";
			if (mydiv.style.height == 0) mydiv.style.height = mapH+"px";

			if (thehref.className) mydiv.className=thehref.className;



			gparams = theloc.split("?");
			gparams = gparams[1].split("&");

			om = "0";
			mtype = "";
			for (i=0; i<=gparams.length-1; i++) {
				items = gparams[i].split("=");
				lon = lat = false;
				switch (items[0]) {
					case "ll":
						ll = items[1].split(",");
						//alert("found long lat:"+ll[0]+"/"+ll[1]);
						break;
					case "z":
						zoom = items[1]
						break;
					case "om":
						om = items[1];
						break;
					case "t":
						mtype = items[1];
						break;
				}
			}

			thehref.parentNode.parentNode.replaceChild(mydiv, thehref.parentNode);
			googlemaps_initMap(mydiv, ll[0], ll[1], zoom, om,
				mtype, thehref.innerHTML, mapW, mapH,
				mapControls, mapMarker);
		} // if (theloc.indexOf("http://maps.google.")!=-1)
	} // for
} // function googlemaps_anchorTagSearchReplace
