function makeMap(idname,xmlname,awidth,aheight,datafolder,markersfolder,azoom,maptype,freetype)
{if(GBrowserIsCompatible())
	{	var gmarkers=[];
		var imarkers=0;
		var m=document.getElementById(idname);
		m.style.width=awidth;
		m.style.height=aheight;
		var icons=[];
		icons[""]=new GIcon(G_DEFAULT_ICON);
		if(freetype){icons[""].image=markersfolder+"marker.php?x=.png";}
		function numberedIcon(text,color)
		{	if(freetype)
			{	if(!text){text=color;}
				if(!icons[text])
					{	var icon=new GIcon(icons[""]);
						icon.image=markersfolder+"marker.php?color="+color+"&text="+text+"&x=.png";
						icons[text]=icon;
					}
			}
			else
			{	if(("A"<=text)&&(text<="Z"))
				{if(!icons[text])
					{icon=new GIcon(icons[""]);
						icon.image="http://www.google.com/mapfiles/marker"+text+".png";
						icons[text]=icon;
					}
				}
				else{return icons[""];
				}
			}
			return icons[text];
		}
		function createMarker(point,html,url,icon,color)
		{	var marker=new GMarker(point);
			if(html)
				{var markerOptions={icon:numberedIcon(icon,color),clickable:true};}
			else
				{markerOptions={icon:numberedIcon(icon,color),clickable:false};}
			marker=new GMarker(point,markerOptions);
			if(url)
				{GEvent.addListener(marker, "click", function(){window.location = url});}
			else
				{GEvent.addListener(marker,"click",function(){marker.openInfoWindowHtml(html);});}
			gmarkers[imarkers]=marker;
			imarkers++;
			return marker;
		}
		var map=new GMap2(document.getElementById(idname));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(0,0),0);
		map.addMapType(G_PHYSICAL_MAP);
		map.removeMapType(G_HYBRID_MAP);
		amaptype=maptype.toUpperCase();
		if(amaptype=="NORMAL"||amaptype=="G_NORMAL_MAP"||amaptype=="N")
			{map.setMapType(G_NORMAL_MAP);}
		else if(amaptype=="SATELLITE"||amaptype=="G_SATELLITE_MAP"||amaptype=="S")
			{map.setMapType(G_SATELLITE_MAP);}
		else if(amaptype=="HYBRID"||amaptype=="G_HYBRID_MAP"||amaptype=="H")
			{map.setMapType(G_HYBRID_MAP);}
		else if(amaptype=="PHYSICAL"||amaptype=="G_PHYSICAL_MAP"||amaptype=="P"||amaptype=="TERRAIN"||amaptype=="T")
			{map.setMapType(G_PHYSICAL_MAP);}
		else{map.setMapType(G_NORMAL_MAP);}
		
		var bounds=new GLatLngBounds();
		GDownloadUrl
		(xmlname,function(doc,responseCode)
		{if(responseCode==200)
			{	var xmlDoc=GXml.parse(doc);
				var markers=xmlDoc.documentElement.getElementsByTagName("marker");
				for(var i=0; i<markers.length; i++)
				{	var lat=markers[i].getAttribute("lat");
					var lng=markers[i].getAttribute("lng");
					if(lat&&lng)
					{	var point=new GLatLng(parseFloat(lat),parseFloat(lng));
						var html=markers[i].getAttribute("html");
						if(html)
						{	html=html.replace(html.match(/href='(?!(http|ftp))/ig),"href='".concat(datafolder));
							html=html.replace(html.match(/href="(?!(http|ftp))/ig),'href="'.concat(datafolder));
							html=html.replace(html.match(/src='(?!(http|ftp))/ig),"src='".concat(datafolder));
							html=html.replace(html.match(/src="(?!(http|ftp))/ig),'src="'.concat(datafolder));
						}
						var url=markers[i].getAttribute("url");
						var icon=markers[i].getAttribute("icon");
						if(!icon){icon="";}
						else{if(!freetype){icon=icon.toUpperCase();}}
						var colour=markers[i].getAttribute("colour");
						if(!colour){colour=markers[i].getAttribute("color");}
						if(!colour){colour="";}
						var marker=createMarker(point,html,url,icon,colour);
						map.addOverlay(marker);
						bounds.extend(point);
					}
				}
				var inputs=[];
				inputs=inputs.concat(xmlDoc.documentElement.getElementsByTagName("line"));
				inputs=inputs.concat(xmlDoc.documentElement.getElementsByTagName("points"));
				var lines="";
				for(i=0; i<2; i++)
				{lines=inputs[i];
					for(var j=0; j<lines.length;j++)
					{colour=lines[j].getAttribute("colour");
						if(!colour){colour=lines[j].getAttribute("color");
						}
						if(!colour){colour="#0000ff";
						}
						var width=lines[j].getAttribute("width");
						if(!width){width="4";
						}
						width=parseFloat(width);
						var opacity=lines[j].getAttribute("opacity");
						if(!opacity){opacity="0.75";
						}
						opacity=parseFloat(opacity);
						var points=lines[j].getElementsByTagName("point");
						var pts=[];
						for(var k=0; k<points.length; k++)
						{pts[k]=new GLatLng(parseFloat(points[k].getAttribute("lat")),parseFloat(points[k].getAttribute("lng")));
							bounds.extend(pts[k]);
						}
						map.addOverlay(new GPolyline(pts,colour,width,opacity));
					}
				}
				if(azoom==-1){map.setZoom(map.getBoundsZoomLevel(bounds));
				}
				else{map.setZoom(azoom);
				}
				map.setCenter(bounds.getCenter());
			}
			else if(responseCode==-1){}
			else{}
		}
		);
	}
}

