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(-30.864510226258346, 119.53125),5);
	
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GOverviewMapControl());
	map.setMapType(G_NORMAL_MAP);
	map.savePosition();
}

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/qtm-marker.png", "/images/shadow-qtm-marker.png", 22, 33, 39, 33);	

		for(var i=0; i<res_markers.length; i++)
		{
			var latlng = new GLatLng(res_markers[i].latitude, res_markers[i].longitude, false);
			var myIcon;
			myIcon = iconAirVac;
			
//			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.address = res_markers[i].address;
			marker.description = res_markers[i].description;
			marker.fax = res_markers[i].fax;
			GEvent.addListener(marker, 'mouseover', function(){
				displayInfoWindow(this, false);
			});
			markers.push(marker);
		}
		displayMarkers(ALL); //Should be here.
	});
}

function displayInfoWindow(myMarker, zooming)
{
	//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 = '<h4><strong>' + myMarker.title + '</strong></h4><p style="margin:0 0 0 15px;">' + myMarker.address + '<br /><strong>f:</strong> ' + myMarker.fax + '</p><div><a href="javascript: returnToDefaultMapPosition()">Back</a></div>';
	if(zooming)
	{
		map.setZoom(13);
	}
	myMarker.openInfoWindowHtml(content);
}

function displayInfoWindowById(myId)
{
	displayInfoWindow(getMarkerById(myId), true);	
}

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;
}

function returnToDefaultMapPosition()
{
	map.closeInfoWindow();
	map.returnToSavedPosition();
}
