var map;
var baseIcon = new GIcon();
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);

function createMarker(point, img, content) {
  var icon = new GIcon(baseIcon);
  icon.image = img;
  var marker = new GMarker(point, icon);
  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(content);
  });
  return marker;
}

var type_markers = {};
type_markers['Catholic'] = 'C';
type_markers['Jewish'] = 'J';
type_markers['Anglican'] = 'A';
type_markers['Islamic'] = 'I';
type_markers['Baptist'] = 'B';
type_markers['Presbyterian'] = 'P';
type_markers['Uniting Church'] = 'U';

var state_schools = [];
var selective_schools = {};
selective_schools['8025'] = "Melbourne High";
selective_schools['8135'] = "Mac Robertson";
selective_schools['7384'] = "Victorian College of the Arts";
selective_schools['8819'] = "Melbourne Girls College";
selective_schools['8003'] = "Lynall Hall";

function loadSchools(file, img, state_school, mgr, level) {
    GDownloadUrl(file, function (data, responseCode) {
		var schools = eval('(' + data + ')');
		var batch = [];
		for (var i = 0; i < schools.length; i++) {
			var point = new GLatLng(schools[i][7], schools[i][8]);
			var url = schools[i][3];
			var school_type = schools[i][1];
			var my_img = img;
			var content;
			if (url == "") {
				content = schools[i][0] + "<br/>"; 
			} else {
				content = "<a href='" + url + "'>" + schools[i][0] + "</a><br/>";
			}
			content = content + "<small>" + schools[i][5] + " " + school_type + "</small><br/>";
			if ((! state_school) && type_markers[school_type] != null) {
				my_img = "alpha_markers/blue_Marker" + type_markers[school_type] + ".png";
			}
			if (schools[i][4] != "") {
				content = content + "<small>Enrolment: " + schools[i][4] + "</small>";
			}
			if (schools[i][6] != "") {
				content = content + "<br/><small>LSG " + schools[i][6] + "</small>";
				my_img = "num_markers/marker" + schools[i][6] + ".png";
			}
			marker = createMarker(point, my_img, content);
			batch.push(marker);
			if (state_school && ! selective_schools.hasOwnProperty(schools[i][1])) {
				state_schools.push(marker);
			}
		}
		mgr.addMarkers(batch, level);
		mgr.refresh();
    });
}

var geocoder = new GClientGeocoder();
geocoder.setBaseCountryCode('AU');
geocoder.setViewport(GLatLngBounds(GLatLng(-39.0,140.0), GLatLng(-35.0, 150.0)));
var addressMarker = null;
function showAddress(address) {
  if (addressMarker != null) {
    map.removeOverlay(addressMarker);
  }
  geocoder.getLatLng(
    address + ", vic",
    function(point) {
      if (!point) {
        alert(address + " not found");
      } else {
        map.setCenter(point, 14);
        addressMarker = new GMarker(point);
        map.addOverlay(addressMarker);
       addressMarker.openInfoWindowHtml(address);
	    GEvent.addListener(addressMarker, "click", function() {
		  findClosestStateSchool(null, point);
		});
      }
    }
  );
  return false;
}

function findClosestStateSchool(overlay, point) {
	if (! point) { return false };
	var min_dist = 100000000000;
	var closest = null;
	for (school in state_schools) {
		if (point.distanceFrom(state_schools[school].getPoint()) < min_dist) {
			min_dist = point.distanceFrom(state_schools[school].getPoint());
			closest = state_schools[school];
		}
	}
	GEvent.trigger(closest, 'click');
}



