var map;
var mapXML;
var geocoder = new GClientGeocoder();
var crimeTypes;
var crimesByView;			//	number of crimes which match current search criteria

var es_markers = [];
var filters = {
	type:"0",
	year:"0",
	month:"0",
	date:"0",
	weekday:"0",
	timereported:"0",
	building:"0",
	zone:"0",
	campus:"0"
	};
var baseIcon = new GIcon();
	baseIcon.shadow = "i/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 loadMapXML() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(41.870089, -87.659704), 14);
		map.addControl(new GScaleControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(6, 32))); 
		 var mapOptions = {googleBarOptions : {style : "new",}}
		 map.enableGoogleBar();
		getXML("g.py");
	}
}

function getXML(xmlFile) {
  GDownloadUrl(xmlFile, function(data, responseCode) {
    mapXML = GXml.parse(data);
    var incidents = mapXML.documentElement.getElementsByTagName("i");
    for (var i = 0; i < incidents.length; i++) {
		showAddress(incidents[i],i);
    }
	updateMarkers();
  });
}

function getFullDate($y,$m,$d,$t) {
	var y0 = document.getElementById("sel_year").getElementsByTagName("option");
	for(var i=0;i<y0.length;i++) {
		if(y0[i].getAttribute("value")==$y) var y1 = y0[i].childNodes[0].nodeValue;
	}
	var m0 = document.getElementById("sel_month").getElementsByTagName("option");
	for(var i=0;i<m0.length;i++) {
		if(m0[i].getAttribute("value")==$m) var m1 = m0[i].childNodes[0].nodeValue;
	}
	var d0 = document.getElementById("sel_date").getElementsByTagName("option");
	for(var i=0;i<d0.length;i++) {
		if(d0[i].getAttribute("value")==$d) var d1 = d0[i].childNodes[0].nodeValue;
	}
	var t0 = document.getElementById("sel_timereported").getElementsByTagName("option");
	for(var i=0;i<t0.length;i++) {
		if(t0[i].getAttribute("value")==$t) var t1 = t0[i].childNodes[0].nodeValue;
	}
	var t = d1 + " " + m1 + " " + y1 + ", " + t1;
	return t;
}
function getType($t) {
	var t = document.getElementById("sel_type").getElementsByTagName("option");
	for(var i=0;i<t.length;i++) {
		if(t[i].getAttribute("value")==$t) var tt = t[i].childNodes[0].nodeValue;
	}
	return tt;
}
function showAddress($incident,$i) {
	es_markers[$i] = {};
	es_markers[$i].type = $incident.getAttribute("type");
	es_markers[$i].year = $incident.getAttribute("y");
	es_markers[$i].month = $incident.getAttribute("m");
	es_markers[$i].date = $incident.getAttribute("d");
	es_markers[$i].weekday = $incident.getAttribute("wd");
	es_markers[$i].timereported = $incident.getAttribute("t");
	es_markers[$i].campus = $incident.getAttribute("q");
	es_markers[$i].zone = $incident.getAttribute("z");
	es_markers[$i].building = $incident.getAttribute("st");

	var loc = $incident.getElementsByTagName("loc")[0].childNodes[0].nodeValue;
	var rep =  $incident.getElementsByTagName("rep")[0].childNodes[0].nodeValue;
	var desc =  $incident.getElementsByTagName("desc")[0].childNodes[0].nodeValue;
	var text = getType(es_markers[$i].type) + "<br/>" + getFullDate(es_markers[$i].year,es_markers[$i].month,es_markers[$i].date,es_markers[$i].timereported)+"<br/>"+ loc + "<br/>" + "<br/>"+ rep + "<br/>" + desc + "</a>";

	var icon = new GIcon();
	icon.shadow = "i/shadow50.png";
	icon.iconSize = new GSize(20, 34);
	icon.shadowSize = new GSize(37, 34);
	icon.iconAnchor = new GPoint(9, 34);
	icon.infoWindowAnchor = new GPoint(9, 2);
	icon.infoShadowAnchor = new GPoint(18, 25);
	icon.image = "i/" + $incident.getAttribute("type") + ".png";
	var point = new GLatLng(parseFloat($incident.getAttribute("la")),parseFloat($incident.getAttribute("lo")));
	es_markers[$i].marker = new GMarker(point,icon);	//	GMarker

	map.addOverlay(es_markers[$i].marker);
  GEvent.addListener(es_markers[$i].marker, "click", function() {
		es_markers[$i].marker.openInfoWindowHtml("<p class=\"info\">" + text + "</p>");
	});	//	end addEventListener
}

function filterType($x) {
	filters.type = $x;
	updateMarkers();
}
function filterYear($x) {
	filters.year = $x;
	updateMarkers();
}
function filterMonth($x) {
	filters.month = $x;
	updateMarkers();
}
function filterDate($x) {
	filters.date = $x;
	updateMarkers();
}
function filterWeekday($x) {
	filters.weekday = $x;
	updateMarkers();
}
function filterTimeReported($x) {
	filters.timereported = $x;
	updateMarkers();
}
function filterZone($x) {
	filters.zone = $x;
	updateMarkers();
}
function filterCampus($x) {
	filters.campus = $x;
	updateMarkers();
}
function filterBuilding($x) {
	filters.building = $x;
	updateMarkers();
}

function updateMarkers() {
	crimesByView = 0;
	for(var i=0;i<es_markers.length;i++) {
	  	if(
			(filters.type == "0" || filters.type == es_markers[i].type) &&
			(filters.year == "0" || filters.year == es_markers[i].year) &&
			(filters.month == "0" || filters.month == es_markers[i].month) &&
			(filters.date == "0" || filters.date == es_markers[i].date) &&
			(filters.weekday == "0" || filters.weekday == es_markers[i].weekday) &&
			(filters.timereported == "0" || filters.timereported == es_markers[i].timereported) &&
			(filters.zone == "0" || filters.zone == es_markers[i].zone) &&
			(filters.campus == "0" || filters.campus == es_markers[i].campus) &&
			(filters.building == "0" || filters.building == es_markers[i].building) 
		) {
	  		es_markers[i].marker.show();
			crimesByView++;
	  	} else {
	  		es_markers[i].marker.hide();
	  	}
	}
	document.getElementById("data").innerHTML = "Incidents In This View : <b>" + crimesByView + "</b>";
}

function resetForms() {
	var s = document.getElementById("tools").getElementsByTagName("select");
	for(var i=0;i<s.length;i++) {
		s[i].selectedIndex = 0;
	}
	for(var i in filters) {
		filters[i] = "0";
	}
	updateMarkers();
}
