
//First, we must create list of locations for pin points
var JobsArray = {};
var minLat, minLong, maxLat, maxLong;
var x, y, i;
var myHLat=0.0;
var myHLong=0.0;


function CreateMap(count, showTypeControl, myHouseLat, myHouseLong) {
	if (document.getElementById("MapResults") == null || JobsArray[0] == null) {
		return;
	}

	minLat=parseFloat(JobsArray[0]['LAT']);
	maxLat=parseFloat(JobsArray[0]['LAT']);
	minLong=parseFloat(JobsArray[0]['LON']);
	maxLong=parseFloat(JobsArray[0]['LON']);

	myHLat = parseFloat(myHouseLat);
	myHLong = parseFloat(myHouseLong);

	for (i = 0; i < count; i++) {
		//check each var
		if (JobsArray[i]['LAT']<minLat){minLat=parseFloat(JobsArray[i]['LAT']);}
		if (JobsArray[i]['LAT']>maxLat){maxLat=parseFloat(JobsArray[i]['LAT']);}
		if (JobsArray[i]['LON']<minLong){minLong=parseFloat(JobsArray[i]['LON']);}
		if (JobsArray[i]['LON']>maxLong){maxLong=parseFloat(JobsArray[i]['LON']);}
	}

	var map = new GMap2(document.getElementById("MapResults"));
	
	if (showTypeControl == 1) {
		map.addControl(new GMapTypeControl());
		map.addControl(new GLargeMapControl());
		zoomModifier = 1;
	} else {
		zoomModifier = 0;
	}


	map.setCenter(new GLatLng(0,0),0);

	//Create an empty GLatLngBounds() object.
	var bounds = new GLatLngBounds();
		
	for (i = 0; i < count; i++)  {
		var point = new GLatLng(JobsArray[i]['LAT'],JobsArray[i]['LON']);
		
		var marker = createMarker(point, JobsArray[i]['HTML'], i+1, showTypeControl);
		map.addOverlay(marker);
		
		if ((i == 0) && (showTypeControl == 1)) {
			marker.openInfoWindowHtml(JobsArray[i]['HTML']);
		}
		
		JobsArray[i]['MARKER'] = marker;
		
		//Each time a point is read, extend the bounds to include that point.
		bounds.extend(point);
	}
	
	// If there's only one building
	if (i == 1) {
		zoomModifier = zoomModifier - 2;
	}
	
	//When all the points have been processed, the zoom level can be set to fit the points.
	map.setZoom(map.getBoundsZoomLevel(bounds) + zoomModifier);
	map.zoomOut();

	//The centre can be calculated by taking the average latitude and longitude from opposite corners of the bounds.
	var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) /2;
	var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) /2;
	map.setCenter(new GLatLng(clat,clng));

	if (showTypeControl==1) {
		// Create a marker where I live
		if (myHLat != 0.0 && myHLong != 0.0) {
			var myHpoint = new GPoint(myHLong,myHLat);
			var myHmarker = createHMarker(myHpoint);
			map.addOverlay(myHmarker);
		}
	}
	
	return {"map": map, "latlng": new GLatLng(
		clat,
		clng
	)};
}

// Creates a marker whose info window displays the given number
function createMarker(point, HTML, num, showTypeControl)
{
	var icon = new GIcon();
	//icon.image="http://imgsg.jobing.com/2006/icons/I-mapmark" + num + ".png";
	//icon.shadow="http://imgsg.jobing.com/2006/icons/I-mapmark-shadow.png";
	
	icon.image="http://imgsg.jobing.com/2007/map/mapmark-sml.png";
	icon.shadow="http://imgsg.jobing.com/2007/map/mapmark-sml-shadow.png";
	icon.iconSize = new GSize(20,23);
	icon.shadowSize = new GSize(20,23);
	icon.iconAnchor = new GPoint(0,0);
	icon.infoWindowAnchor = new GPoint(10, 5);
	
	var marker = new GMarker(point, icon);

	// Show this marker's index in the info window when it is clicked
	if (showTypeControl==1) {
		GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(HTML);});
	}
	
	return marker;
}

// Creates a marker for my House
function createHMarker(point)
{
	var icon = new GIcon();
	icon.image="http://imgsg.jobing.com/2006/icons/myH.png";
	icon.shadow="http://imgsg.jobing.com/2006/icons/myHS.png";
	icon.iconSize = new GSize(60,37);
	icon.shadowSize = new GSize(60,37);
	icon.iconAnchor = new GPoint(40,30);
	icon.infoWindowAnchor = new GPoint(35,5);
	var marker = new GMarker(point, icon);
	return marker;
}
