

var map;
var MyMarker = new Array();
var aMarker = new Array();

function makeAdminBasicMap()
{
	//make the map
	if(arguments.length == 0)
	{
		var aLatitude = new Array();
		var aLongitude = new Array();

		aLatitude.push("36.285242");
		aLongitude.push("-95.925751");
	}
	else
	{
	   aLatitude = arguments[0];
	   aLongitude = arguments[1];	
	}

	if (GBrowserIsCompatible()) {

		map = new GMap2(document.getElementById("map"));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());

		var maxLat = -999.0;
		var maxLong = -999.0;
		var minLat = 999.0;
		var minLong = 999.0;

		for(i=0;i<aLatitude.length;i++)
		{
			if(parseFloat(aLatitude[i]) < minLat )
			{
				minLat = parseFloat(aLatitude[i]);
			}
			if(parseFloat(aLatitude[i]) > maxLat)
			{
				maxLat = parseFloat(aLatitude[i]);
			}
		}

		for(i=0;i<aLongitude.length;i++)
		{

			if(parseFloat(aLongitude[i]) < minLong )
			{
				minLong = parseFloat(aLongitude[i]);

			}
			if(parseFloat(aLongitude[i]) > parseFloat(maxLong))
			{
				maxLong = parseFloat(aLongitude[i]);
			}
		}

		var lat_dif = ((maxLat - minLat) * 0.1) + 0.0001;
		var lng_dif = ((maxLong - minLong) * 0.1) + 0.0001;

		var sw = new GLatLng((minLat-lat_dif),(minLong-lng_dif));
		var ne = new GLatLng((maxLat+lat_dif),(maxLong+lng_dif));

		var bounds = new GLatLngBounds(sw, ne);

		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
		map.setZoom(7);
		var center = new GLatLng(aLatitude[0],aLongitude[0]);
		marker = new GMarker(center, {draggable: true});
		map.addOverlay(marker);

	}
}


function makeProfilePageMap(nLat,nLong)
{
	//make the map
	if (GBrowserIsCompatible()) {

		map = new GMap2(document.getElementById("map"));
		var start = new GLatLng(nLat, nLong);
		map.setCenter(start, 10);
		map.addControl(new GMapTypeControl(1));
		map.addControl(new GLargeMapControl());

		var center = new GLatLng(nLat,nLong);
		marker = new GMarker(center);
		map.addOverlay(marker);

	}
}


function makeProfileCallbackMap(aLatitude,aLongitude, aMarkers)
{
	map = '';
	
	if (GBrowserIsCompatible()) {

		if(!map)
		{
			map = new GMap2(document.getElementById("map"));
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			//map.addControl(new GOverviewMapControl(new GSize(200,200)));
		}

		var maxLat = -999.0;
		var maxLong = -999.0;
		var minLat = 999.0;
		var minLong = 999.0;

		for(i=0;i<aLatitude.length;i++)
		{
			if(parseFloat(aLatitude[i]) < minLat )
			{
				minLat = parseFloat(aLatitude[i]);
			}
			if(parseFloat(aLatitude[i]) > maxLat)
			{
				maxLat = parseFloat(aLatitude[i]);
			}
		}

		for(i=0;i<aLongitude.length;i++)
		{
			if(parseFloat(aLongitude[i]) < minLong )
			{
				minLong = parseFloat(aLongitude[i]);

			}
			if(parseFloat(aLongitude[i]) > parseFloat(maxLong))
			{
				maxLong = parseFloat(aLongitude[i]);
			}
		}

		//alert(maxLong);

		var lat_dif = ((maxLat - minLat) * 0.1) + 0.0001;
		var lng_dif = ((maxLong - minLong) * 0.1) + 0.0001;

		var sw = new GLatLng((minLat-lat_dif),(minLong-lng_dif));
		var ne = new GLatLng((maxLat+lat_dif),(maxLong+lng_dif));

		var bounds = new GLatLngBounds(sw, ne);

		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));

		//map.setZoom(7);

        var center = new GLatLng(sLat,sLong);
        marker = new GMarker(center);
		map.addOverlay(marker);

		var zCount = 1;
		for(i = 0; i < aLatitude.length; i++)
		{
			//alert(aLat[i]+"="+aLong[i]);
			var center = new GLatLng(aLatitude[i],aLongitude[i]);

			tempMarker = new Object();
			tempMarker.point= center;
			tempMarker.infowindow = "<p style='font-size: 12px;width: 200px;'>"+aMarkers[i]+"</p>";
			tempMarker.marker = numberedIconForCities(center,zCount,aMarkers[i]);
			MyMarker[zCount] = tempMarker;
			
			map.addOverlay(tempMarker.marker);

			zCount++;
		}

	}
}



function makeAdminCallBackMap(sLat,sLong)
{
	//make the map
	var aLatitude = new Array();
	var aLongitude = new Array();

	aLatitude.push(sLat);
	aLongitude.push(sLong);

	if (GBrowserIsCompatible()) {

		map = new GMap2(document.getElementById("map"));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());

		var maxLat = -999.0;
		var maxLong = -999.0;
		var minLat = 999.0;
		var minLong = 999.0;

		for(i=0;i<aLatitude.length;i++)
		{
			if(parseFloat(aLatitude[i]) < minLat )
			{
				minLat = parseFloat(aLatitude[i]);
			}
			if(parseFloat(aLatitude[i]) > maxLat)
			{
				maxLat = parseFloat(aLatitude[i]);
			}
		}

		for(i=0;i<aLongitude.length;i++)
		{

			if(parseFloat(aLongitude[i]) < minLong )
			{
				minLong = parseFloat(aLongitude[i]);

			}
			if(parseFloat(aLongitude[i]) > parseFloat(maxLong))
			{
				maxLong = parseFloat(aLongitude[i]);
			}
		}

		var lat_dif = ((maxLat - minLat) * 0.1) + 0.0001;
		var lng_dif = ((maxLong - minLong) * 0.1) + 0.0001;

		var sw = new GLatLng((minLat-lat_dif),(minLong-lng_dif));
		var ne = new GLatLng((maxLat+lat_dif),(maxLong+lng_dif));

		var bounds = new GLatLngBounds(sw, ne);

		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
		map.setZoom(8);
		var center = new GLatLng(sLat,sLong);
		marker = new GMarker(center, {draggable: true});
		map.addOverlay(marker);

	}
}

function makeAdminPolyLineMap(aLatitude,aLongitude,aHtml,color)
{
	var html = "";

	if (GBrowserIsCompatible()) {

		map = new GMap2(document.getElementById("map"));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());

		var maxLat = -999.0;
		var maxLong = -999.0;
		var minLat = 999.0;
		var minLong = 999.0;

		for(i=0;i<aLatitude.length;i++)
		{
			if(parseFloat(aLatitude[i]) < minLat )
			{
				minLat = parseFloat(aLatitude[i]);
			}
			if(parseFloat(aLatitude[i]) > maxLat)
			{
				maxLat = parseFloat(aLatitude[i]);
			}
		}

		for(i=0;i<aLongitude.length;i++)
		{
			if(parseFloat(aLongitude[i]) < minLong )
			{
				minLong = parseFloat(aLongitude[i]);

			}
			if(parseFloat(aLongitude[i]) > parseFloat(maxLong))
			{
				maxLong = parseFloat(aLongitude[i]);
			}
		}

		var lat_dif = ((maxLat - minLat) * 0.1) + 0.0001;
		var lng_dif = ((maxLong - minLong) * 0.1) + 0.0001;

		var sw = new GLatLng((minLat-lat_dif),(minLong-lng_dif));
		var ne = new GLatLng((maxLat+lat_dif),(maxLong+lng_dif));

		var bounds = new GLatLngBounds(sw, ne);

		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
		//map.setZoom(8);


		var tempPoly = [];

		for(z = 0; z < aLatitude.length;z++)
		{
			tempPoly.push(new GLatLng(aLatitude[z],aLongitude[z]));
		}


		map.addOverlay(new GPolyline(tempPoly , "#ff0000", 5));



		var zCount = 1;
		var nTotalPoints = aLatitude.length;
		for(i = 0; i < aLatitude.length; i++)
		{
			var center = new GLatLng(aLatitude[i],aLongitude[i]);
			//marker = new GMarker(center, {draggable: true});
			tempMarker = new Object();
			tempMarker.point= center;
			if(zCount ==  1)
			{
				tempMarker.infowindow = "<p>"+aHtml[i]+"<a href='javascript:void(0);' onclick='activateMarker("+(zCount+1)+");'><br />next</a></p>";
			}
			else if(zCount > 1 && zCount < aLatitude.length)
			{
				tempMarker.infowindow = "<p>"+aHtml[i]+"<a href='javascript:void(0);' onclick='activateMarker("+(zCount-1)+")';><br />previous</a>&nbsp;|&nbsp;<a href='javascript:void(0);' onclick='activateMarker("+(zCount+1)+");'>next</a></p>";
			}
			else
			{
				tempMarker.infowindow = "<p>"+aHtml[i]+"<a href='javascript:void(0);' onclick='activateMarker("+(zCount-1)+")';><br />previous</a></p>";
			}
			tempMarker.marker = numberedIcon(center,zCount,aHtml[i],nTotalPoints, color || "green");
			MyMarker[zCount] = tempMarker;

			map.addOverlay(tempMarker.marker);
			zCount++;

			//map.addOverlay(numberedIcon(center,zCount,aHtml[i]));
			//zCount++;
		}
	}
}

function numberedIcon(point,index, html,nTotalPoints, color)
{
	color = color || "green";

    var baseIcon = new GIcon();
	var marker = new Array();

	baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
	baseIcon.iconSize = new GSize(20, 34);
	baseIcon.shadowSize = new GSize(37, 34);
	baseIcon.iconAnchor = new GPoint(9, 34);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);
	baseIcon.infoShadowAnchor = new GPoint(18, 25);

	var letter = String.fromCharCode("A".charCodeAt(0) + index);
	var icon = new GIcon(baseIcon);
	icon.image = "/images/map_markers/"+color+"_"+(index)+".png";

	marker[index] = new GMarker(point, icon);

	if(index == nTotalPoints && nTotalPoints == 1)
	{
		GEvent.addListener(marker[index], "click", function() {
			marker[index].openInfoWindowHtml( html );
		});
	}
	else if(index < nTotalPoints && index > 1)
	{
		GEvent.addListener(marker[index], "click", function() {
			marker[index].openInfoWindowHtml( html+"<a href='javascript:void(0);' onclick='activateMarker("+(index-1)+")';><br />previous</a>&nbsp;|&nbsp;<a href='javascript:void(0);' onclick='activateMarker("+(index+1)+");'>next</a>" );
		});
	}
	else if(index == 1)
	{
		GEvent.addListener(marker[index], "click", function() {
			marker[index].openInfoWindowHtml( html+"<a href='javascript:void(0);' onclick='activateMarker("+(index+1)+");'><br />next</a>" );
		});
	}
	else if(index == nTotalPoints)
	{
		GEvent.addListener(marker[index], "click", function() {
			marker[index].openInfoWindowHtml( html+"<a href='javascript:void(0);' onclick='activateMarker("+(index-1)+")';><br />previous</a>" );
		});
	}


	return marker[index];
}

function numberedIconForCities(point,index, html)
{
	var baseIcon = new GIcon();
	var marker = new Array();

	baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
	baseIcon.iconSize = new GSize(20, 34);
	baseIcon.shadowSize = new GSize(37, 34);
	baseIcon.iconAnchor = new GPoint(9, 34);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);
	baseIcon.infoShadowAnchor = new GPoint(18, 25);

	var letter = String.fromCharCode("A".charCodeAt(0) + index);
	var icon = new GIcon(baseIcon);
         icon.image = "/images/map_markers/marker_paddle_green_"+(index)+".png";

    if (typeof sMarkerColor != 'undefined'){
             icon.image = "/images/map_markers/"+sMarkerColor+"_"+(index)+".png";   
    }

	marker[index] = new GMarker(point, icon);
      
 
	GEvent.addListener(marker[index], "click", function() {
   		marker[index].openInfoWindowHtml( html );
	});

	return marker[index];
}

function makeCityMap(aLatitude,aLongitude,aMarkers)
{
	if (GBrowserIsCompatible()) {

		if(!map)
		{
			map = new GMap2(document.getElementById("map"));
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			//map.addControl(new GOverviewMapControl(new GSize(200,200)));
		}

		var maxLat = -999.0;
		var maxLong = -999.0;
		var minLat = 999.0;
		var minLong = 999.0;

		for(i=0;i<aLatitude.length;i++)
		{
			if(parseFloat(aLatitude[i]) < minLat )
			{
				minLat = parseFloat(aLatitude[i]);
			}
			if(parseFloat(aLatitude[i]) > maxLat)
			{
				maxLat = parseFloat(aLatitude[i]);
			}
		}

		for(i=0;i<aLongitude.length;i++)
		{
			if(parseFloat(aLongitude[i]) < minLong )
			{
				minLong = parseFloat(aLongitude[i]);

			}
			if(parseFloat(aLongitude[i]) > parseFloat(maxLong))
			{
				maxLong = parseFloat(aLongitude[i]);
			}
		}

		//alert(maxLong);

		var lat_dif = ((maxLat - minLat) * 0.1) + 0.0001;
		var lng_dif = ((maxLong - minLong) * 0.1) + 0.0001;

		var sw = new GLatLng((minLat-lat_dif),(minLong-lng_dif));
		var ne = new GLatLng((maxLat+lat_dif),(maxLong+lng_dif));

		var bounds = new GLatLngBounds(sw, ne);

		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));

		map.setZoom(7);


		var zCount = 1;
		for(i = 0; i < aLatitude.length; i++)
		{
			//alert(aLat[i]+"="+aLong[i]);
			var center = new GLatLng(aLatitude[i],aLongitude[i]);

			tempMarker = new Object();
			tempMarker.point= center;
			tempMarker.infowindow = "<p style='font-size: 12px;width: 250px;'>"+aMarkers[i]+"</p>";
			tempMarker.marker = numberedIconForCities(center,zCount,aMarkers[i]);
			MyMarker[zCount] = tempMarker;

			map.addOverlay(tempMarker.marker);

			zCount++;
		}


		

	}
}

function makeCitiesMap(aLatitude,aLongitude, aMarkers, aType)
{
	if (GBrowserIsCompatible()) {

		if(!map)
		{
			map = new GMap2(document.getElementById("map"));
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			//map.addControl(new GOverviewMapControl(new GSize(200,200)));
		}

		var maxLat = -999.0;
		var maxLong = -999.0;
		var minLat = 999.0;
		var minLong = 999.0;

		for(i=0;i<aLatitude.length;i++)
		{
			if(parseFloat(aLatitude[i]) < minLat )
			{
				minLat = parseFloat(aLatitude[i]);
			}
			if(parseFloat(aLatitude[i]) > maxLat)
			{
				maxLat = parseFloat(aLatitude[i]);
			}
		}

		for(i=0;i<aLongitude.length;i++)
		{
			if(parseFloat(aLongitude[i]) < minLong )
			{
				minLong = parseFloat(aLongitude[i]);

			}
			if(parseFloat(aLongitude[i]) > parseFloat(maxLong))
			{
				maxLong = parseFloat(aLongitude[i]);
			}
		}

		//alert(maxLong);

		var lat_dif = ((maxLat - minLat) * 0.1) + 0.0001;
		var lng_dif = ((maxLong - minLong) * 0.1) + 0.0001;

		var sw = new GLatLng((minLat-lat_dif),(minLong-lng_dif));
		var ne = new GLatLng((maxLat+lat_dif),(maxLong+lng_dif));

		var bounds = new GLatLngBounds(sw, ne);

		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));

		//map.setZoom(7);


		var zCount = 1;
		for(i = 0; i < aLatitude.length; i++)
		{
			//alert(aLat[i]+"="+aLong[i]);
			var center = new GLatLng(aLatitude[i],aLongitude[i]);

			tempMarker = new Object();
			tempMarker.point= center;
			tempMarker.infowindow = "<div style='height:125px; width:300px; margin-right:10px; overflow-y:auto; overflow-x:hidden;'><p style='font-size:12px; width:275px;'>"+aMarkers[i]+"</p></div>";
			tempMarker.marker = numberedIconForCities( center, zCount, tempMarker.infowindow );
			MyMarker[zCount] = tempMarker;
  
			map.addOverlay(tempMarker.marker);
            if (aType[i]==0){
                tempMarker.marker.hide();
            }
                          //compare, regioncities
			zCount++;
		}
	}
}

function makeCitiesMapUnhidden(aLatitude,aLongitude, aMarkers)
{
	if (GBrowserIsCompatible()) {

		if(!map)
		{
			map = new GMap2(document.getElementById("map"));
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			//map.addControl(new GOverviewMapControl(new GSize(200,200)));
		}

		var maxLat = -999.0;
		var maxLong = -999.0;
		var minLat = 999.0;
		var minLong = 999.0;

		for(i=0;i<aLatitude.length;i++)
		{
			if(parseFloat(aLatitude[i]) < minLat )
			{
				minLat = parseFloat(aLatitude[i]);
			}
			if(parseFloat(aLatitude[i]) > maxLat)
			{
				maxLat = parseFloat(aLatitude[i]);
			}
		}

		for(i=0;i<aLongitude.length;i++)
		{
			if(parseFloat(aLongitude[i]) < minLong )
			{
				minLong = parseFloat(aLongitude[i]);

			}
			if(parseFloat(aLongitude[i]) > parseFloat(maxLong))
			{
				maxLong = parseFloat(aLongitude[i]);
			}
		}

		//alert(maxLong);

		var lat_dif = ((maxLat - minLat) * 0.1) + 0.0001;
		var lng_dif = ((maxLong - minLong) * 0.1) + 0.0001;

		var sw = new GLatLng((minLat-lat_dif),(minLong-lng_dif));
		var ne = new GLatLng((maxLat+lat_dif),(maxLong+lng_dif));

		var bounds = new GLatLngBounds(sw, ne);

		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));

		//map.setZoom(7);


		var zCount = 1;
		for(i = 0; i < aLatitude.length; i++)
		{
			//alert(aLat[i]+"="+aLong[i]);
			var center = new GLatLng(aLatitude[i],aLongitude[i]);

			tempMarker = new Object();
			tempMarker.point= center;
			tempMarker.infowindow = "<p style='font-size:12px; width:300px;'>"+aMarkers[i]+"</p>";
			tempMarker.marker = numberedIconForCities(center,zCount,aMarkers[i]);
			MyMarker[zCount] = tempMarker;
  
			map.addOverlay(tempMarker.marker);
               //tempMarker.marker.hide();
                          //compare, regioncities
			zCount++;
		}
	}
}



function makeRightSideMap(aLatitude,aLongitude, aMarkers)
{
	if (GBrowserIsCompatible()) {

		if(!map)
		{
			map = new GMap2(document.getElementById("map"));
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			//map.addControl(new GOverviewMapControl(new GSize(200,200)));
		}

		var maxLat = -999.0;
		var maxLong = -999.0;
		var minLat = 999.0;
		var minLong = 999.0;

		for(i=0;i<aLatitude.length;i++)
		{
			if(parseFloat(aLatitude[i]) < minLat )
			{
				minLat = parseFloat(aLatitude[i]);
			}
			if(parseFloat(aLatitude[i]) > maxLat)
			{
				maxLat = parseFloat(aLatitude[i]);
			}
		}

		for(i=0;i<aLongitude.length;i++)
		{
			if(parseFloat(aLongitude[i]) < minLong )
			{
				minLong = parseFloat(aLongitude[i]);

			}
			if(parseFloat(aLongitude[i]) > parseFloat(maxLong))
			{
				maxLong = parseFloat(aLongitude[i]);
			}
		}

		//alert(maxLong);

		var lat_dif = ((maxLat - minLat) * 0.1) + 0.0001;
		var lng_dif = ((maxLong - minLong) * 0.1) + 0.0001;

		var sw = new GLatLng((minLat-lat_dif),(minLong-lng_dif));
		var ne = new GLatLng((maxLat+lat_dif),(maxLong+lng_dif));

		var bounds = new GLatLngBounds(sw, ne);

		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));

		//map.setZoom(7);


		var zCount = 1;
		for(i = 0; i < aLatitude.length; i++)
		{
			//alert(aLat[i]+"="+aLong[i]);
			var center = new GLatLng(aLatitude[i],aLongitude[i]);

			tempMarker = new Object();
			tempMarker.point= center;
			tempMarker.infowindow = "<div style='font-size: 12px;'>"+aMarkers[i]+"</div>";
			tempMarker.marker = numberedIconForCities(center,zCount,aMarkers[i]);
			MyMarker[zCount] = tempMarker;

			map.addOverlay(tempMarker.marker);
                        //tempMarker.marker.hide();

			zCount++;
		}



	}
}

function activateMarker(id)
{
    MyMarker[id].marker.show();
	MyMarker[id].marker.openInfoWindowHtml( MyMarker[id].infowindow );
}


function testMap()
{
	var map = new GMap2(document.getElementById("map"));
	var start = new GLatLng(37.443109, -122.146189);
	map.setCenter(start, 16);
	map.addControl(new GMapTypeControl(1));
	map.addControl(new GLargeMapControl());
	map.addControl(new GScaleControl());


	// red marker icon
	var icon = new GIcon();
	icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
	icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	icon.iconSize = new GSize(12, 20);
	icon.shadowSize = new GSize(22, 20);
	icon.iconAnchor = new GPoint(6, 20);
	//icon.infoWindowAnchor = new GPoint(5, 1);

	///////////////////////

	var marker=[];
	var point=[];
	var poly=[];
	var line=null;

	point.push(new GLatLng(37.44268, -122.14854));
	point.push(new GLatLng(37.44188, -122.14739));
	point.push(new GLatLng(37.44247, -122.14681));
	point.push(new GLatLng(37.44152, -122.14530));
	point.push(new GLatLng(37.44183, -122.14423));
	point.push(new GLatLng(37.44310, -122.14618));
	point.push(new GLatLng(37.44372, -122.14567));
	point.push(new GLatLng(37.44447, -122.14687));
	point.push(new GLatLng(37.44500, -122.14640));
	point.push(new GLatLng(37.44527, -122.14642));
	point.push(new GLatLng(37.44588, -122.14747));
	point.push(new GLatLng(37.44467, -122.14867));
	point.push(new GLatLng(37.44389, -122.14736));


	// Markers
	for(var n=0;n<point.length;n++)
	{
		marker[n] = new GMarker(point[n], {icon:icon, draggable: true});
		map.addOverlay(marker[n]);
		marker[n].enableDragging();
		GEvent.addListener(marker[n],'drag',function(){draw()});
	};

	// Polygon

	function draw()
	{
		poly.length=0;
		for(var i=0;i<marker.length;i++)
		{
			poly.push(marker[i].getPoint());
		}
		poly.push(marker[0].getPoint());
		if(line){map.removeOverlay(line)};
		line=new GPolygon(poly,'#FF0000', 3, 1,'#0000FF',0.2);
		map.addOverlay(line);
	};


	draw();

}
