var map;
var markers = new Array();
var ALL = 0;
//var COMPLETED = 1;
//var CURRENT = 2;
//var COMING = 3;
var UNDERGROUND_DIAMOND = 1;
var SURFACE_DIAMOND = 2;
var LONGHOLE = 3;
var RC = 4;
var AIR_VAC = 5;

/*
 *  Please initialize all the element names below by the function initializeMap().
 *  These names will be used in 'template_project.php' file to display the contents/values.
 */
var divIdForMap;

function initializeMap(map_div_name)
{
	divIdForMap = map_div_name;
	displayMap();
	generateMarkers();
}

function displayMap()
{
	map = new GMap2(document.getElementById(divIdForMap));
	map.setCenter(new GLatLng(-27.916766641249062,133.681640625),4);
	
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GOverviewMapControl());
	map.setMapType(G_NORMAL_MAP);
}

function generateMarkers()
{
	GDownloadUrl("/include/gmap_markers.php", function(data){
		var res_markers = eval( '(' + data + ')' );

//		var iconCompleted = getMarkerIcon("/images/completed.png", "/images/shadow.png", 20, 34, 38, 34);
//		var iconCurrent   = getMarkerIcon("/images/current.png", "/images/shadow.png", 20, 34, 38, 34);	
//		var iconComing   = getMarkerIcon("/images/coming.png", "/images/shadow.png", 20, 34, 38, 34);	

		var iconUndergroundDiamond  = getMarkerIcon("/images/underground_diamond.png", "/images/shadow.png", 20, 34, 38, 34);	
		var iconSurfaceDiamond		= getMarkerIcon("/images/surface_diamond.png", "/images/shadow.png", 20, 34, 38, 34);	
		var iconLonghole   			= getMarkerIcon("/images/longhole.png", "/images/shadow.png", 20, 34, 38, 34);	
		var iconRc   				= getMarkerIcon("/images/rc.png", "/images/shadow.png", 20, 34, 38, 34);	
		var iconAirVac  			= getMarkerIcon("/images/air_vac.png", "/images/shadow.png", 20, 34, 38, 34);	

		for(var i=0; i<res_markers.length; i++)
		{
			var latlng = new GLatLng(res_markers[i].latitude, res_markers[i].longitude, false);
			var myIcon;
			switch(res_markers[i].state)
			{
				case UNDERGROUND_DIAMOND:
					myIcon = iconUndergroundDiamond;
					break;
				case SURFACE_DIAMOND:
					myIcon = iconSurfaceDiamond;
					break;
				case LONGHOLE:
					myIcon = iconLonghole;
					break;
				case RC:
					myIcon = iconRc;
					break;
				case AIR_VAC:
					myIcon = iconAirVac;
					break;					
			}
			var marker = new GMarker(latlng, {icon: myIcon});
			marker.id = res_markers[i].id;
			marker.title = res_markers[i].title;
			marker.location = res_markers[i].location;
			marker.blurb = res_markers[i].blurb;
			marker.state = res_markers[i].state;
			GEvent.addListener(marker, 'mouseover', function(){
				displayInfoWindow(this);
			});
			markers.push(marker);
		}
		displayMarkers(ALL); //Should be here.
	});
}

function displayInfoWindow(myMarker)
{
	//var content = '<h3>' + myMarker.title + '</h3><p><strong>' + myMarker.location + '</strong></p>' + myMarker.blurb + '<div class="map_read_more_link"><a href="project_item.php?pid=' + myMarker.id + '">Read more...</a></div>';
	var content = '<h3>' + myMarker.title + '</h3>';
	myMarker.openInfoWindowHtml(content);
}

function displayInfoWindowById(myId)
{
	displayInfoWindow(getMarkerById(myId));	
}

function getMarkerById(myId)
{
	for(var i=0; i<markers.length; i++)
	{
		if(markers[i].id == myId)
		{
			return markers[i];
		}
	}
}

function displayMarkers(state)
{
	map.clearOverlays();
	if(state == ALL)
	{
		for(var i=0; i<markers.length; i++)
		{
			map.addOverlay(markers[i]);
		}
	}
	else
	{
		for(var i=0; i<markers.length; i++)
		{
			var myState = markers[i].state;
			if(state == myState)
			{
				map.addOverlay(markers[i]);
			}
		}
	}
}

function getMarkerIcon(imageUrl, shadowUrl, iconSizeX, iconSizeY, shadowSizeX, shadowSizeY)
{
	var myIcon = new GIcon();
	var xCenter = iconSizeX/2;
	
	myIcon.image = imageUrl;
	myIcon.shadow = shadowUrl;
	myIcon.iconSize = new GSize(iconSizeX, iconSizeY);
	myIcon.shadowSize = new GSize(shadowSizeX, shadowSizeY)
	myIcon.iconAnchor = new GPoint(xCenter, iconSizeY);
	myIcon.infoWindowAnchor = new GPoint(xCenter, 0);
	myIcon.infoShadowAnchor = new GPoint(xCenter, 0);
	
	return myIcon;
}
