var map;
var panel;
var lon;
var lat;
var AddPointLink;
var points;
var markers;
var page1s;
var page2s;
var label1s;
var label2s;
var htmls;
var sidepanel = '<table>';
var CenterAndZoom;
var ZoomLevel;
var ChangeMapType;
var MapType;
var ShowInfoWindow;
var InfoWindowType;
var BlowupMapType;
var BlowupZoom;
var request = GXmlHttp.create();
var bounds = new GLatLngBounds();

function OpenInfoWindow(i)
{
	lon.innerHTML = points[i].x;
	lat.innerHTML = points[i].y;
	AddPointLink.innerHTML = '';
	if (ChangeMapType[i] == 'True' && MapType[i] != '') 
	{
		if (MapType[i] == 'G_HYBRID_TYPE') {map.setMapType(G_HYBRID_TYPE)};
		if (MapType[i] == 'G_SATELLITE_TYPE') {map.setMapType(G_SATELLITE_TYPE)};
		if (MapType[i] == 'G_MAP_TYPE') {map.setMapType(G_MAP_TYPE)};
	}
	if (CenterAndZoom[i] == 'True')
	{
//		bounds = new GLatLngBounds();
//		bounds.extend(new GLatLng(points[i].y, points[i].x));	
//		map.setZoom(map.getBoundsZoomLevel(bounds));
//		map.setCenter(bounds.getCenter());
//		map.centerAndZoom(points[i],parseInt(ZoomLevel[i]));
		map.setCenter(new GLatLng(points[i].y, points[i].x), parseInt(ZoomLevel[i]));
	}
	if (ShowInfoWindow[i] == 'True') 
	{
		if (InfoWindowType[i] == 'MapBlowup' && BlowupMapType[i] != '') 
		{
			if (BlowupMapType[i] == 'G_HYBRID_TYPE') {markers[i].showMapBlowup(parseInt(BlowupZoom[i]),G_HYBRID_TYPE)};
			if (BlowupMapType[i] == 'G_SATELLITE_TYPE') {markers[i].showMapBlowup(parseInt(BlowupZoom[i]),G_SATELLITE_TYPE)};
			if (BlowupMapType[i] == 'G_MAP_TYPE') {markers[i].showMapBlowup(parseInt(BlowupZoom[i]),G_MAP_TYPE)};
		}
		else
		{
			markers[i].openInfoWindowHtml(page1s[i]);
//			map.setCenter(bounds.getCenter());
		}
	}
}
function makeOpenerCaller(i)
{
	return function() { OpenInfoWindow(i); };
}
function checkclick(point)
{
	lon.innerHTML = point.x;
	lat.innerHTML = point.y;
}
function loadMap(_mapFile) 
{
	map = new GMap2(document.getElementById("map"));
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());
	//map.setMapType(G_MAP_TYPE);
	map.addControl(new GScaleControl());
	map.setCenter(new GLatLng(38.957006,-94.674683), 10);

//	map.centerAndZoom(new GPoint(-84.228058,33.38444),parseInt(7));
	panel = document.getElementById("panel");
	lon = document.getElementById("lon");
	lat = document.getElementById("lat");
	AddPointLink = document.getElementById("lblAddPoint");

	GEvent.addListener(map, 'click', function(overlay, point)
	{
		if (overlay)
		{}
		else if (point) 
		{
			checkclick( point ) ;
		}
	});


	request.open('GET', _mapFile);
request.onreadystatechange = function()
{
	if (request.readyState == 4)
	{
	var xmlDoc = request.responseXML;
	var pointElements = xmlDoc.getElementsByTagName("point");
	if (pointElements.length == 0)
		return;
	// last point is centroid of map and zoom level
	var lng		= pointElements[pointElements.length-1].getAttribute("lng");
	var lat		= pointElements[pointElements.length-1].getAttribute("lat");
	var zoom	= pointElements[pointElements.length-1].getAttribute("ZoomLevel");	

	points = new Array(pointElements.length-1);
	markers = new Array(pointElements.length-1);
	page1s = new Array(pointElements.length-1);
	page2s = new Array(pointElements.length-1);
	label1s = new Array(pointElements.length-1);
	label2s = new Array(pointElements.length-1);
	temp = new Array(pointElements.length-1);
	CenterAndZoom = new Array(pointElements.length-1);
	ZoomLevel = new Array(pointElements.length-1);
	ChangeMapType = new Array(pointElements.length-1);
	MapType = new Array(pointElements.length-1);
	ShowInfoWindow = new Array(pointElements.length-1);
	InfoWindowType = new Array(pointElements.length-1);
	BlowupMapType = new Array(pointElements.length-1);
	BlowupZoom = new Array(pointElements.length-1);
	var marker_num = 0;
	update_tabs = function(a,b,c)
	{
		if (a == 'page')
		{
			var html = make_tab(marker_num, parseFloat(b));
			markers[marker_num].openInfoWindowHtml(html);
		}
	}

	function make_tab(i,p)
	{
		if (p == 1)
		{
			var html = '<div page="1" label="'  + label1s[i] + '" class="active">' +page1s[i] +'</div>'+'<div page="2" label="'  + label2s[i] + '"></div>';
		}
		else
		{
			var html = '<div page="1" label="'  + label1s[i] + '">' +page2s[i] +'</div>'+'<div page="2" label="'  + label2s[i] + '" class="active"></div>';
		}
		return html;
	}

	function createTabbedMarker(point,marker_num,icon)
	{
		var marker = new GMarker(point,icon);
		markers[marker_num] = marker;
		var i = marker_num;
		var html = make_tab(i,1); 
		GEvent.addListener(marker, 'click', function()
		{
			markers[marker_num].openInfoWindowHtml(html);
		});
		return marker;
	}
	for (var i = 0; i < pointElements.length-1; ++i)
	{
		var lng = pointElements[i].getAttribute("lng");
		var lat = pointElements[i].getAttribute("lat");
		var Description = pointElements[i].getAttribute("Description");
		CenterAndZoom[i] = pointElements[i].getAttribute("CenterAndZoom");
		ZoomLevel[i] = pointElements[i].getAttribute("ZoomLevel");
		ChangeMapType[i] = pointElements[i].getAttribute("ChangeMapType");
		MapType[i] = pointElements[i].getAttribute("MapType");
		ShowInfoWindow[i] = pointElements[i].getAttribute("ShowInfoWindow");
		InfoWindowType[i] = pointElements[i].getAttribute("InfoWindowType");
		BlowupMapType[i] = pointElements[i].getAttribute("BlowupMapType");
		BlowupZoom[i] = pointElements[i].getAttribute("BlowupZoom");
		var ShowIcon = pointElements[i].getAttribute("ShowIcon");
		var FileName = pointElements[i].getAttribute("FileName");
		var IconHeight = pointElements[i].getAttribute("IconHeight");
		var IconWidth = pointElements[i].getAttribute("IconWidth");
		var ShadowFileName = pointElements[i].getAttribute("ShadowFileName");
		var ShadowHeight = pointElements[i].getAttribute("ShadowHeight");
		var ShadowWidth = pointElements[i].getAttribute("ShadowWidth");
		var Anchor_X = pointElements[i].getAttribute("Anchor_X");
		var Anchor_Y = pointElements[i].getAttribute("Anchor_Y");
		var Info_X = pointElements[i].getAttribute("Info_X");
		var Info_Y = pointElements[i].getAttribute("Info_Y");
		page1s[i] = pointElements[i].getAttribute("Page1");
		page2s[i] = pointElements[i].getAttribute("Page2");
		label1s[i] = pointElements[i].getAttribute("Label1");
		label2s[i] = pointElements[i].getAttribute("Label2");
		var myPath = '' + FileName;
		var icon = new GIcon();
		icon.image = myPath;
		icon.shadow = '' + ShadowFileName;
		icon.iconSize = new GSize(IconWidth,IconHeight);
		icon.shadowSize = new GSize(ShadowWidth,ShadowHeight);
		icon.iconAnchor = new GPoint(Anchor_X, Anchor_Y);
		icon.infoWindowAnchor = new GPoint(12,2);
		points[i] = new GPoint(parseFloat(lng),parseFloat(lat));
		markers[i] = new GMarker(points[i], icon);	
		bounds.extend(new GLatLng(points[i].y, points[i].x));
		GEvent.addListener(markers[i],'click', makeOpenerCaller(i));
		map.addOverlay(markers[i]);
		if (ZoomLevel[i] == -1) {ZoomLevel[i] = 4};
		if (Description == '') {Description = 'Icon ' + i};
		var link = "<a href=\"javascript:OpenInfoWindow(" + i + ")\">";
		sidepanel += "<tr class='trow'><td><img src='" + myPath + "'></td>";
		sidepanel += "<td>" + link + "<strong>" + Description + "</strong></a></td></tr>";
	}
	sidepanel += "</table>";
	panel.innerHTML = sidepanel;
	map.setZoom(map.getBoundsZoomLevel(bounds));
	map.setCenter(bounds.getCenter());
	}
}
	request.send(null);
}




function ShowForm(d,a,i)
{
	var html = "<form action='http://maps.google.com/maps' method='get' target='_blank'>";
	if (d == 'fromHere') {
		html += '<span id=Directions>Directions: ' + "<a href=\"javascript:ShowForm('toHere','" + a + "'," + i + ");\">To Here</a> - From Here</span><br>";
		html = html+ "<Input type='hidden' id=saddr name=saddr value='"+a+"'>";
		html = html+ "<span id='EndAddress'>End Address</span><br><Input type='text' id=daddr name=daddr>";
	} else {
		html += '<span id=Directions>Directions: To Here - ' + "<a href=\"javascript:ShowForm('fromHere','" + a + "'," + i + ");\">From Here</a></span><br>";
		html = html+ "<span id='StartAddress'>Start Address</span><br><Input type='text' id=saddr name=saddr>";
		html = html+ "<Input type='hidden' id=daddr name=daddr value='"+a+"'>";
	}
html = html + "<br><input type='Submit' value='Get Directions' id='GetDirectionsButton'>";
html = html + "</form>";
//document.getElementById("dd").innerHTML = html;
markers[i].openInfoWindowHtml(html);
}
