var cur_polylines = new Array();
var cur_points = new Array();
var cur_dir_points = new Array();
var swapped_points = new Array();
var map = false;
var custommap = false;

var deptbounds = false;

// default values
var default_lat = 44.0081423496512;
var default_lon = -73.1749422473751;
var default_zoom = 15;

// icons
var dicon = new GIcon();
dicon.image = "icons/136.png";
dicon.iconSize = new GSize(20, 34);
dicon.iconAnchor = new GPoint(10, 34);

var sicon = new GIcon();
sicon.image = "icons/dd-start.png";
sicon.iconSize = new GSize(20, 34);
sicon.iconAnchor = new GPoint(10, 34);

// arrays to hold special feature markers
var phone_markers = new Array();
var art_markers = new Array();
var dining_markers = new Array();
var wifi_markers = new Array();
var labs_markers = new Array();
var atms_markers = new Array();
var lots_markers = new Array();
var mail_markers = new Array();

function getQueryVariable(variable) {
	var query = window.location.search.substring(1);
	var vars = query.split("&");
	for (var i=0;i<vars.length;i++) {
		var pair = vars[i].split("=");
		if (pair[0] == variable) {
    		return pair[1];
		}
	}

	return "";
}

function clearDescAndShapes(lat, lon, zoom) {
	document.getElementById("descriptions").innerHTML = "";
	document.getElementById("backtomap").innerHTML = "";
	document.getElementById("campusMapFormBuildings").selectedIndex = 0;
	document.getElementById("campusMapFormDepartments").selectedIndex = 0;
	document.getElementById("directions").style.display = "none";
	document.getElementById("changeBounds").style.display = "none";
	document.getElementById("drivingDirectionsFrom").value = "";
	document.getElementById("drivingDirectionsTo").value = "";
	//document.getElementById("printDirections").innerHTML = "";

	for(var i = 0; i < cur_polylines.length; i++) {
		map.removeOverlay(cur_polylines[i]);
	}
	
	for(var i = 0; i < cur_dir_points.length; i++) {
		map.removeOverlay(cur_dir_points[i]);
	}
	
	unSwapMarkers();
	
	map.setCenter(new GLatLng(lat,lon), zoom, custommap);
}

function clearDesc() {
	document.getElementById("descriptions").innerHTML = "";
	document.getElementById("backtomap").innerHTML = "";
	document.getElementById("directions").style.display = "none";
	document.getElementById("changeBounds").style.display = "none";
	document.getElementById("drivingDirectionsFrom").value = "";
	document.getElementById("drivingDirectionsTo").value = "";
	//document.getElementById("printDirections").innerHTML = "";

	for(var i = 0; i < cur_dir_points.length; i++) {
		map.removeOverlay(cur_dir_points[i]);
	}
	
	unSwapMarkers();
}

function resetMap() {
	for(var i = 0; i < cur_points.length; i++) {
		map.removeOverlay(cur_points[i]);
	}

	for(var i = 0; i < cur_polylines.length; i++) {
		map.removeOverlay(cur_points[i]);
	}

	for(var i = 0; i < cur_dir_points.length; i++) {
		map.removeOverlay(cur_dir_points[i]);
	}

	document.getElementById("resetmap").innerHTML = "";
	document.getElementById("descriptions").innerHTML = "";
	document.getElementById("backtomap").innerHTML = "";
	document.getElementById("campusMapFormBuildings").selectedIndex = 0;
	document.getElementById("campusMapFormDepartments").selectedIndex = 0;
	document.getElementById("directions").style.display = "none";
	document.getElementById("changeBounds").style.display = "none";
	document.getElementById("drivingDirectionsFrom").value = "";
	document.getElementById("drivingDirectionsTo").value = "";
	//document.getElementById("printDirections").innerHTML = "";
	
	displayLoadingImage();
	loadPoints(default_lat, default_lon, default_zoom);
	bounds = false;
}

function createMarker(point, name, fullname, outline) {
	var micon = dicon;
	var marker = new GMarker(point, {icon: micon,title:fullname});

	GEvent.addListener(marker, "click", function() {
		getCampusMapData(name, outline, fullname);
		map.setCenter(point);

		if(outline === true) {
			//getCampusMapOutline(name);
		}
	});
		
	return marker;
}

function swapMarker(name, fullname, new_icon, add_to_list) {
	var old_marker = cur_points[name];
	var new_point = old_marker.getPoint();
	
	map.removeOverlay(old_marker);
	var new_marker = new GMarker(new_point, {icon:new_icon, title:fullname, clickable:true});

	if(add_to_list == true) {
		swapped_points.push(new Array(name, fullname));
	} else {
		GEvent.addListener(new_marker, "click", function() {
			getCampusMapData(name, true, fullname);
			map.setCenter(new_point);
	
			if(outline === true) {
				//getCampusMapOutline(name);
			}
		});

	}

	map.addOverlay(new_marker);

	cur_points[name] = new_marker;
}

function unSwapMarkers() {
	for(var i = 0; i < swapped_points.length; i++) {
		swapMarker(swapped_points[i][0], swapped_points[i][1], dicon, false);
	}
	
	swapped_points = new Array();
}

function getCampusMapData(name, backtomap, fullname)
{
	displayLoadingImage();
	
	unSwapMarkers();

	swapMarker(name, fullname, sicon, true);

	var XMLHttpRequestObject = false;
	if (window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	if(XMLHttpRequestObject) {
		var obj = document.getElementById("descriptions");
		XMLHttpRequestObject.open("GET", "/services/campusmap/googlemap/ajax.php?name=" + name + "&function=building");
		XMLHttpRequestObject.onreadystatechange = function()
		{
			if (XMLHttpRequestObject.readyState == 4 &&
				XMLHttpRequestObject.status == 200) {
				
				document.getElementById("loadingImage").innerHTML = "";

				obj.innerHTML = XMLHttpRequestObject.responseText;

				var link = document.getElementById("backtomap");

				if(backtomap === true) {
					link.innerHTML = "| <a href=\"#\" onClick=\"clearDescAndShapes(" + default_lat + "," + default_lon + "," + default_zoom + ");\">Back to Map View</a>";
				} else {
					link.innerHTML = "| <a href=\"#\" onClick=\"clearDesc();\">Back to Map View</a>";
				}
				
				document.getElementById("loadingImage").style.display = "none";
			}
		}

		XMLHttpRequestObject.send(null);
	}

	getCampusMapAddress(name);
}

function getCampusMapAddress(name)
{
	displayLoadingImage();

	document.getElementById("directions").style.display = "";

	var XMLHttpRequestObject = false;
	if (window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	if(XMLHttpRequestObject) {
		var obj = document.getElementById("drivingDirectionsFrom");
		XMLHttpRequestObject.open("GET", "/services/campusmap/googlemap/ajax.php?name=" + name + "&function=address");
		XMLHttpRequestObject.onreadystatechange = function()
		{
			if (XMLHttpRequestObject.readyState == 4 &&
				XMLHttpRequestObject.status == 200) {

				document.getElementById("loadingImage").innerHTML = "";

				obj.value = XMLHttpRequestObject.responseText;
			}
			
			document.getElementById("loadingImage").style.display = "none";
		}
		
		XMLHttpRequestObject.send(null);
	}
}

function flipSourceDest() {
	var source = document.getElementById("drivingDirectionsFrom");
	var dest = document.getElementById("drivingDirectionsTo");
	
	var source_text = source.value;
	var dest_text = dest.value;
	
	source.value = dest_text;
	dest.value = source_text;
}

function getCampusMapOutline(name)
{
	displayLoadingImage();

	for(var i = 0; i < cur_polylines.length; i++) {
		map.removeOverlay(cur_polylines[i]);
	}

	var XMLHttpRequestObject = false;
	if (window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	if(XMLHttpRequestObject) {
		XMLHttpRequestObject.open("GET", "/services/campusmap/googlemap/ajax.php?name=" + name + "&function=outline");
		XMLHttpRequestObject.onreadystatechange = function()
		{
			if (XMLHttpRequestObject.readyState == 4 &&
				XMLHttpRequestObject.status == 200) {

				var respxml = XMLHttpRequestObject.responseXML.documentElement;

				var outlines = respxml.getElementsByTagName("outline");
				
				for(var i = 0; i < outlines.length; i++) {
					var outline = outlines[i].firstChild.nodeValue;
					
					var coords_arr = outline.split(",");
					var lines_arr = new Array();
					
					for(var j = 0; j < coords_arr.length; j = j + 3) {
						lines_arr.push(new GLatLng(coords_arr[j + 1], coords_arr[j]));
					}
					
					var polyline = new GPolyline(lines_arr, "#336699", 2);

					map.addOverlay(polyline);
					cur_polylines.push(polyline);
				}
				
				document.getElementById("loadingImage").style.display = "none";
			}
		}
		
		XMLHttpRequestObject.send(null);
	}
}

function centerOnBuilding(name)
{
	displayLoadingImage();

	document.getElementById("loadingImage").innerHTML = "<img src=\"icons/loader.gif\" class=\"loadingImage\" />";

	var XMLHttpRequestObject = false;
	if (window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	if(XMLHttpRequestObject) {
		XMLHttpRequestObject.open("GET", "/services/campusmap/googlemap/ajax.php?name=" + name + "&function=coords");
		XMLHttpRequestObject.onreadystatechange = function()
		{
			if (XMLHttpRequestObject.readyState == 4 &&
				XMLHttpRequestObject.status == 200) {
				
				var coords = XMLHttpRequestObject.responseText;
				var coords_arr = coords.split(",");
				map.setCenter(new GLatLng(coords_arr[1], coords_arr[0]), 17, custommap);
				
				document.getElementById("loadingImage").style.display = "none";
			}
		}
		
		XMLHttpRequestObject.send(null);
	}
}

function getCampusMapBuilding() {
	var dropdown = document.getElementById("campusMapFormBuildings");
	var ddindex = dropdown.selectedIndex;
	
	if(ddindex != 0)
	{
		var ddvalue = dropdown.options[ddindex].value;
		var ddname = dropdown.options[ddindex].text;
		
		getCampusMapData(ddvalue, false, ddname);
		//getCampusMapOutline(ddvalue);
		centerOnBuilding(ddvalue);
	}
}

function getCampusMapDepartment() {
	clearDesc();
	map.clearOverlays();
	document.getElementById("artBox").checked = false;
	document.getElementById("phoneBox").checked = false;
	document.getElementById("diningBox").checked = false;
	document.getElementById("wifiBox").checked = false;
	document.getElementById("labsBox").checked = false;
	document.getElementById("atmsBox").checked = false;
	document.getElementById("lotsBox").checked = false;
	
	var link = document.getElementById("resetmap");
	link.innerHTML = "| <a href=\"#\" onClick=\"resetMap();\">Reset Map View</a>";

	var dropdown = document.getElementById("campusMapFormDepartments");
	var ddindex = dropdown.selectedIndex;
	
	if(ddindex != 0)
	{
		var ddvalue = dropdown.options[ddindex].value;
		
		var XMLHttpRequestObject = false;
		if (window.XMLHttpRequest) {
			XMLHttpRequestObject = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
		}
		
		if(XMLHttpRequestObject) {
			XMLHttpRequestObject.open("GET", "/services/campusmap/googlemap/ajax.php?name=" + ddvalue + "&function=depts");
			XMLHttpRequestObject.onreadystatechange = function()
			{
				if (XMLHttpRequestObject.readyState == 4 &&
					XMLHttpRequestObject.status == 200) {
					
					//map.setCenter(new GLatLng(default_lat, default_lon), default_zoom);
					
					var bounds = new GLatLngBounds();

					var respxml = XMLHttpRequestObject.responseXML.documentElement;

					var points = respxml.getElementsByTagName("point");
				
					for(var i = 0; i < points.length; i++) {
						var fullname = points[i].childNodes[0].firstChild.nodeValue;
						var name = points[i].childNodes[1].firstChild.nodeValue;
						var coordinates = points[i].childNodes[2].firstChild.nodeValue;

						var coords_arr = coordinates.split(",");
						
						var latlng = new GLatLng(coords_arr[1], coords_arr[0]);
						
						if(points.length == 1 || points[i].childNodes[3].firstChild.nodeValue == "true") {
							map.setCenter(latlng);
						}
						
						map.addOverlay(createMarker(latlng,
										name, fullname, false));
										
						bounds.extend(latlng);
					}
					
					deptbounds = bounds;
					
					if(!map.getBounds().containsBounds(deptbounds)) {
						document.getElementById("changeBounds").style.display = "";
					}
					
					/*
					var outlines = respxml.getElementsByTagName("outline");
					
					for(var i = 0; i < outlines.length; i++) {
						var outline = outlines[i].firstChild.nodeValue;
						
						var coords_arr = outline.split(",");
						var lines_arr = new Array();
						
						for(var j = 0; j < coords_arr.length; j = j + 3) {
							lines_arr.push(new GLatLng(coords_arr[j + 1], coords_arr[j]));
						}
						
						var polyline = new GPolyline(lines_arr, "#336699", 2);

						map.addOverlay(polyline);
						cur_polylines.push(polyline);
					}
					*/

					document.getElementById("loadingImage").style.display = "none";
				}
			}
			
			XMLHttpRequestObject.send(null);
		}
	}
}

function zoomToDepartmentBounds() {
	map.setZoom(map.getBoundsZoomLevel(deptbounds));
	map.setCenter(deptbounds.getCenter());
	
	document.getElementById("changeBounds").style.display = "none";
}

function togglePhone() {
	var phoneBox = document.getElementById("phoneBox");
	
	if(phoneBox.checked == true) {
		var XMLHttpRequestObject = false;
		if (window.XMLHttpRequest) {
			XMLHttpRequestObject = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
		}
		
		if(XMLHttpRequestObject) {
			XMLHttpRequestObject.open("GET", "/services/campusmap/googlemap/ajax.php?function=phone");
			XMLHttpRequestObject.onreadystatechange = function()
			{
				if (XMLHttpRequestObject.readyState == 4 &&
					XMLHttpRequestObject.status == 200) {
	
					var respxml = XMLHttpRequestObject.responseXML.documentElement;
					
					var phones = respxml.getElementsByTagName("phone");
	
					var picon = new GIcon();
					picon.image = "icons/ephone.png";
					picon.iconSize = new GSize(20, 20);
					picon.iconAnchor = new GPoint(10, 10);
					
					for(var i = 0; i < phones.length; i++) {
						var coordinates = phones[i].childNodes[0].firstChild.nodeValue;
						
						var coords_arr = coordinates.split(",");
						var point = new GLatLng(coords_arr[1], coords_arr[0]);
						var phoneMarker = new GMarker(point, {icon: picon, title: "Emergency Telephone", clickable: false});
						
						phone_markers.push(phoneMarker);
						map.addOverlay(phoneMarker);
					}
	
					document.getElementById("loadingImage").style.display = "none";
				}
			}
			
			XMLHttpRequestObject.send(null);
		}
	} else {
		for(var i = 0; i < phone_markers.length; i++) {
			map.removeOverlay(phone_markers[i]);
		}
	}
}

function toggleDining() {
	var diningBox = document.getElementById("diningBox");
	
	if(diningBox.checked == true) {
		var XMLHttpRequestObject = false;
		if (window.XMLHttpRequest) {
			XMLHttpRequestObject = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
		}
		
		if(XMLHttpRequestObject) {
			XMLHttpRequestObject.open("GET", "/services/campusmap/googlemap/ajax.php?function=dining");
			XMLHttpRequestObject.onreadystatechange = function()
			{
				if (XMLHttpRequestObject.readyState == 4 &&
					XMLHttpRequestObject.status == 200) {
	
					var respxml = XMLHttpRequestObject.responseXML.documentElement;
					
					var dinings = respxml.getElementsByTagName("dining");
	
					var picon = new GIcon();
					picon.image = "icons/dining.png";
					picon.iconSize = new GSize(20, 20);
					picon.iconAnchor = new GPoint(10, 10);
					
					for(var i = 0; i < dinings.length; i++) {
						var coordinates = dinings[i].childNodes[0].firstChild.nodeValue;
						
						var coords_arr = coordinates.split(",");
						var point = new GLatLng(coords_arr[1], coords_arr[0]);
						var diningMarker = new GMarker(point, {icon: picon, title: dinings[i].childNodes[1].firstChild.nodeValue, clickable: false});

						dining_markers.push(diningMarker);
						map.addOverlay(diningMarker);
					}
	
					document.getElementById("loadingImage").style.display = "none";
				}
			}
			
			XMLHttpRequestObject.send(null);
		}
	} else {
		for(var i = 0; i < dining_markers.length; i++) {
			map.removeOverlay(dining_markers[i]);
		}
	}
}

function toggleArt() {
	var artBox = document.getElementById("artBox");
	
	if(artBox.checked == true) {
		var XMLHttpRequestObject = false;
		if (window.XMLHttpRequest) {
			XMLHttpRequestObject = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
		}
		
		if(XMLHttpRequestObject) {
			XMLHttpRequestObject.open("GET", "/services/campusmap/googlemap/ajax.php?function=art");
			XMLHttpRequestObject.onreadystatechange = function()
			{
				if (XMLHttpRequestObject.readyState == 4 &&
					XMLHttpRequestObject.status == 200) {
	
					var respxml = XMLHttpRequestObject.responseXML.documentElement;
					
					var arts = respxml.getElementsByTagName("art");
	
					var picon = new GIcon();
					picon.image = "icons/art.png";
					picon.iconSize = new GSize(20, 20);
					picon.iconAnchor = new GPoint(10, 10);
					
					for(var i = 0; i < arts.length; i++) {
						var coordinates = arts[i].childNodes[0].firstChild.nodeValue;
						
						var coords_arr = coordinates.split(",");
						var point = new GLatLng(coords_arr[1], coords_arr[0]);
						var artMarker = new GMarker(point, {icon: picon, title: arts[i].childNodes[1].firstChild.nodeValue, clickable: false});

						art_markers.push(artMarker);
						map.addOverlay(artMarker);
					}
	
					document.getElementById("loadingImage").style.display = "none";
				}
			}
			
			XMLHttpRequestObject.send(null);
		}
	} else {
		for(var i = 0; i < art_markers.length; i++) {
			map.removeOverlay(art_markers[i]);
		}
	}
}

function toggleWifi() {
	var wifiBox = document.getElementById("wifiBox");
	
	if(wifiBox.checked == true) {
		var XMLHttpRequestObject = false;
		if (window.XMLHttpRequest) {
			XMLHttpRequestObject = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
		}
		
		if(XMLHttpRequestObject) {
			XMLHttpRequestObject.open("GET", "/services/campusmap/googlemap/ajax.php?function=wifi");
			XMLHttpRequestObject.onreadystatechange = function()
			{
				if (XMLHttpRequestObject.readyState == 4 &&
					XMLHttpRequestObject.status == 200) {
	
					var respxml = XMLHttpRequestObject.responseXML.documentElement;
					
					var wifis = respxml.getElementsByTagName("wifi");
	
					var picon = new GIcon();
					picon.image = "icons/wifi.png";
					picon.iconSize = new GSize(20, 20);
					picon.iconAnchor = new GPoint(10, 10);
					
					for(var i = 0; i < wifis.length; i++) {
						var coordinates = wifis[i].childNodes[0].firstChild.nodeValue;
						
						var coords_arr = coordinates.split(",");
						var point = new GLatLng(coords_arr[1], coords_arr[0]);
						var wifiMarker = new GMarker(point, {icon: picon, title: wifis[i].childNodes[1].firstChild.nodeValue, clickable: false});

						wifi_markers.push(wifiMarker);
						map.addOverlay(wifiMarker);
					}
	
					document.getElementById("loadingImage").style.display = "none";
				}
			}
			
			XMLHttpRequestObject.send(null);
		}
	} else {
		for(var i = 0; i < wifi_markers.length; i++) {
			map.removeOverlay(wifi_markers[i]);
		}
	}
}

function toggleLabs() {
	var labsBox = document.getElementById("labsBox");
	
	if(labsBox.checked == true) {
		var XMLHttpRequestObject = false;
		if (window.XMLHttpRequest) {
			XMLHttpRequestObject = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
		}
		
		if(XMLHttpRequestObject) {
			XMLHttpRequestObject.open("GET", "/services/campusmap/googlemap/ajax.php?function=labs");
			XMLHttpRequestObject.onreadystatechange = function()
			{
				if (XMLHttpRequestObject.readyState == 4 &&
					XMLHttpRequestObject.status == 200) {
	
					var respxml = XMLHttpRequestObject.responseXML.documentElement;
					
					var labs = respxml.getElementsByTagName("lab");
	
					var picon = new GIcon();
					picon.image = "icons/lab.png";
					picon.iconSize = new GSize(20, 20);
					picon.iconAnchor = new GPoint(10, 10);
					
					for(var i = 0; i < labs.length; i++) {
						var coordinates = labs[i].childNodes[0].firstChild.nodeValue;
						
						var coords_arr = coordinates.split(",");
						var point = new GLatLng(coords_arr[1], coords_arr[0]);
						var labsMarker = new GMarker(point, {icon: picon, title: labs[i].childNodes[1].firstChild.nodeValue, clickable: false});

						labs_markers.push(labsMarker);
						map.addOverlay(labsMarker);
					}
	
					document.getElementById("loadingImage").style.display = "none";
				}
			}
			
			XMLHttpRequestObject.send(null);
		}
	} else {
		for(var i = 0; i < labs_markers.length; i++) {
			map.removeOverlay(labs_markers[i]);
		}
	}
}

function toggleAtms() {
	var atmsBox = document.getElementById("atmsBox");
	
	if(atmsBox.checked == true) {
		var XMLHttpRequestObject = false;
		if (window.XMLHttpRequest) {
			XMLHttpRequestObject = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
		}
		
		if(XMLHttpRequestObject) {
			XMLHttpRequestObject.open("GET", "/services/campusmap/googlemap/ajax.php?function=atms");
			XMLHttpRequestObject.onreadystatechange = function()
			{
				if (XMLHttpRequestObject.readyState == 4 &&
					XMLHttpRequestObject.status == 200) {
	
					var respxml = XMLHttpRequestObject.responseXML.documentElement;
					
					var atms = respxml.getElementsByTagName("atm");
	
					var picon = new GIcon();
					picon.image = "icons/atm.png";
					picon.iconSize = new GSize(20, 20);
					picon.iconAnchor = new GPoint(10, 10);
					
					for(var i = 0; i < atms.length; i++) {
						var coordinates = atms[i].childNodes[0].firstChild.nodeValue;
						
						var coords_arr = coordinates.split(",");
						var point = new GLatLng(coords_arr[1], coords_arr[0]);
						var atmsMarker = new GMarker(point, {icon: picon, title: atms[i].childNodes[1].firstChild.nodeValue, clickable: false});

						atms_markers.push(atmsMarker);
						map.addOverlay(atmsMarker);
					}
	
					document.getElementById("loadingImage").style.display = "none";
				}
			}
			
			XMLHttpRequestObject.send(null);
		}
	} else {
		for(var i = 0; i < atms_markers.length; i++) {
			map.removeOverlay(atms_markers[i]);
		}
	}
}

function toggleLots() {
	var lotsBox = document.getElementById("lotsBox");
	
	if(lotsBox.checked == true) {
		var XMLHttpRequestObject = false;
		if (window.XMLHttpRequest) {
			XMLHttpRequestObject = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
		}
		
		if(XMLHttpRequestObject) {
			XMLHttpRequestObject.open("GET", "/services/campusmap/googlemap/ajax.php?function=parking");
			XMLHttpRequestObject.onreadystatechange = function()
			{
				if (XMLHttpRequestObject.readyState == 4 &&
					XMLHttpRequestObject.status == 200) {
	
					var respxml = XMLHttpRequestObject.responseXML.documentElement;
					
					var lots = respxml.getElementsByTagName("lot");
	
					var picon = new GIcon();
					picon.image = "icons/lot.png";
					picon.iconSize = new GSize(20, 20);
					picon.iconAnchor = new GPoint(10, 10);
					
					for(var i = 0; i < lots.length; i++) {
						var coordinates = lots[i].childNodes[0].firstChild.nodeValue;
						
						var coords_arr = coordinates.split(",");
						var point = new GLatLng(coords_arr[1], coords_arr[0]);
						var lotsMarker = new GMarker(point, {icon: picon, title: lots[i].childNodes[1].firstChild.nodeValue, clickable: false});

						lots_markers.push(lotsMarker);
						map.addOverlay(lotsMarker);
					}
	
					document.getElementById("loadingImage").style.display = "none";
				}
			}
			
			XMLHttpRequestObject.send(null);
		}
	} else {
		for(var i = 0; i < lots_markers.length; i++) {
			map.removeOverlay(lots_markers[i]);
		}
	}
}

function toggleMail() {
	var mailBox = document.getElementById("mailBox");
	
	if(mailBox.checked == true) {
		var XMLHttpRequestObject = false;
		if (window.XMLHttpRequest) {
			XMLHttpRequestObject = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
		}
		
		if(XMLHttpRequestObject) {
			XMLHttpRequestObject.open("GET", "/services/campusmap/googlemap/ajax.php?function=mail");
			XMLHttpRequestObject.onreadystatechange = function()
			{
				if (XMLHttpRequestObject.readyState == 4 &&
					XMLHttpRequestObject.status == 200) {
	
					var respxml = XMLHttpRequestObject.responseXML.documentElement;
					
					var mail = respxml.getElementsByTagName("mail");
	
					var picon = new GIcon();
					picon.image = "icons/mail.png";
					picon.iconSize = new GSize(20, 20);
					picon.iconAnchor = new GPoint(10, 10);
					
					for(var i = 0; i < mail.length; i++) {
						var coordinates = mail[i].childNodes[0].firstChild.nodeValue;
						
						var coords_arr = coordinates.split(",");
						var point = new GLatLng(coords_arr[1], coords_arr[0]);
						var mailMarker = new GMarker(point, {icon: picon, title: mail[i].childNodes[1].firstChild.nodeValue, clickable: false});

						mail_markers.push(mailMarker);
						map.addOverlay(mailMarker);
					}
	
					document.getElementById("loadingImage").style.display = "none";
				}
			}
			
			XMLHttpRequestObject.send(null);
		}
	} else {
		for(var i = 0; i < mail_markers.length; i++) {
			map.removeOverlay(mail_markers[i]);
		}
	}
}

function loadPoints(lat, lon, zoom)
{
	clearDescAndShapes(lat, lon, zoom);
	map.clearOverlays();
	
	var XMLHttpRequestObject = false;
	if (window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	if(XMLHttpRequestObject) {
		XMLHttpRequestObject.open("GET", "/services/campusmap/googlemap/ajax.php?function=load");
		XMLHttpRequestObject.onreadystatechange = function()
		{
			if (XMLHttpRequestObject.readyState == 4 &&
				XMLHttpRequestObject.status == 200) {

				var respxml = XMLHttpRequestObject.responseXML.documentElement;

				var points = respxml.getElementsByTagName("point");
			
				for(var i = 0; i < points.length; i++) {
					var fullname = points[i].childNodes[0].firstChild.nodeValue;
					var name = points[i].childNodes[1].firstChild.nodeValue;
					var coordinates = points[i].childNodes[2].firstChild.nodeValue;

					var coords_arr = coordinates.split(",");
					var marker = createMarker(new GLatLng(coords_arr[1], coords_arr[0]),
									name, fullname, true);
					
					map.addOverlay(marker);
									
					cur_points[name] = marker;
				}

				document.getElementById("loadingImage").style.display = "none";
			}
		}
		
		XMLHttpRequestObject.send(null);
	}
}

function displayLoadingImage()
{
	document.getElementById("loadingImage").style.display = "";
}

function getDrivingDirections() {
	var start = document.getElementById("drivingDirectionsFrom").value;
	var end = document.getElementById("drivingDirectionsTo").value;

	var XMLHttpRequestObject = false;
	if (window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	if(XMLHttpRequestObject) {
		XMLHttpRequestObject.open("GET", "http://maps.google.com/maps?saddr=" + start + "&daddr=" + end + "&output=kml");
		XMLHttpRequestObject.onreadystatechange = function()
		{
			if (XMLHttpRequestObject.readyState == 4 &&
				XMLHttpRequestObject.status == 200) {
				
				var xml = XMLHttpRequestObject.responseXML;
				
				var descriptions = document.getElementById("descriptions").innerHTML = xml;
			}
		}
		
		XMLHttpRequestObject.send(null);
	}
}

function getCampusMapDirections(name)
{
	displayLoadingImage();

	for(var i = 0; i < cur_polylines.length; i++) {
		map.removeOverlay(cur_polylines[i]);
	}

	for(var i = 0; i < cur_dir_points.length; i++) {
		map.removeOverlay(cur_dir_points[i]);
	}

	var start = document.getElementById("drivingDirectionsFrom").value;
	var end = document.getElementById("drivingDirectionsTo").value;

	var XMLHttpRequestObject = false;
	if (window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	if(XMLHttpRequestObject) {
		XMLHttpRequestObject.open("GET", "ajax.php?function=directions&saddr=" + start + "&daddr=" + end);
		XMLHttpRequestObject.onreadystatechange = function()
		{
			if (XMLHttpRequestObject.readyState == 4 &&
				XMLHttpRequestObject.status == 200) {

				var bounds = new GLatLngBounds();
				
				var respxml = XMLHttpRequestObject.responseXML.documentElement;
				
				var names = respxml.getElementsByTagName("name");

				var descs = respxml.getElementsByTagName("Placemark");
				
				var dir_string = "<fieldset><legend>" + names[0].firstChild.nodeValue + "</legend><ol>";
				
				for(var i=0; i < descs.length; i++) {
					var desc = descs[i].childNodes[0].firstChild.nodeValue;
					
					if(descs[i].childNodes[1].nodeName == "description") {
						var dist = " (" + descs[i].childNodes[1].firstChild.nodeValue + ")";
					} else {
						var dist = "";
					}

					if(desc != "Route") {
						dir_string += "<li>" + desc + dist + "</li>";
					}
				}
				
				dir_string += "</ol></fieldset>";
				
				document.getElementById("printDirections").innerHTML = dir_string;

				var points = respxml.getElementsByTagName("Point");
				
				for(var i=0; i < points.length; i++) {
					var point = points[i].firstChild.firstChild.nodeValue;
					
					var coords_arr = point.split(",");
					
					var latlng = new GLatLng(coords_arr[1], coords_arr[0]);
					
					var dicon = new GIcon(G_DEFAULT_ICON, "icons/marker" + (i+1) + ".png");
					
					var dmarker = new GMarker(latlng, {icon: dicon, title: names[i+1].firstChild.nodeValue, clickable: false})
					
					cur_dir_points.push(dmarker);
					
					map.addOverlay(dmarker);
				}
				
				var lines = respxml.getElementsByTagName("LineString");
				
				for(var i=0; i < lines.length; i++) {

					var lines_arr = new Array();
				
					for(var j=0; j < lines[i].childNodes.length; j++) {
						var line = lines[i].childNodes[j].firstChild.nodeValue;

						var coords_arr = line.split(",");

						if(coords_arr[1] != null && coords_arr[0] != null) {
							var latlng = new GLatLng(coords_arr[1], coords_arr[0]);
							
							bounds.extend(latlng);
	
							lines_arr.push(latlng);
						}
					}
					
					var polyline = new GPolyline(lines_arr, "#000000", 5, 1);

					map.addOverlay(polyline);
					cur_polylines.push(polyline);
					
					map.setZoom(map.getBoundsZoomLevel(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));
				}
			}
		}
		
		XMLHttpRequestObject.send(null);
	}
}
