// Map

if (GBrowserIsCompatible()) {

// ==Initial Map==
var map = new GMap2(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.setCenter(new GLatLng(53.380922, -6.591797), 14);
//var grass = new GGeoXml ("http://www.nuim.ie/location/maps/googlemaps/kml_files/grass.kml");
	//map.addOverlay(grass);
var buildings = new GGeoXml ("http://www.nuim.ie/location/webmaps/kml_files/buildings3.kml");
	map.addOverlay(buildings);
var data = new Array(); //sets up array which will tell what xml files have been downloaded
	data["buildings"]=0;
	data["academic"]=0;
	data["apartments"]=0;
	data["carparks"]=0;
	data["estate"]=0;
	data["lecture"]=0;
	data["shorttermaccomm"]=0;
	data["atm"]=0;
	data["shops_town"]=0;
	data["campus_facilities"]=0;
	data["petrol"]=0;
	data["food_campus"]=0;
	data["food_town"]=0;
	data["pub"]=0;
	data["takeaway"]=0;
	data["freshers"]=0;
	data["phone"]=0;
	data["fire"]=0;
	data["doctors"]=0;
	data["student_services"]=0;
	data["pacr"]=0;
	data["defib"]=0;
	data["sport"]=0;
	data["busrail"]=0;
	data["taxi"]=0;
	data["chemist"]=0;
	data["centre"]=0;
	data["admin"]=0;
	data["kilkenny"]=0;
	data["campus_shops"]=0;
	data["wireless"]=0;
	data["openday"]=0;
var gmarkers = [];
var gicons = [];
	gicons["carparks"] = new GIcon(G_DEFAULT_ICON, "icons/parking.png");
	gicons["atm"] = new GIcon(G_DEFAULT_ICON, "icons/euro.png");
	gicons["atm"].shadow = "icons/euro_shadow.png";
	gicons["doctors"] = new GIcon(G_DEFAULT_ICON, "icons/cross.png");
	gicons["doctors"].shadow = "";
	gicons["chemist"] = new GIcon(G_DEFAULT_ICON, "icons/cross.png");
	gicons["chemist"].shadow = "";
	gicons["defib"] = new GIcon(G_DEFAULT_ICON, "icons/cross.png");
	gicons["defib"].shadow = "";
	
var opts = new Object();
opts.maxWidth = 550;
	
function createMarker(point,name,html,category) {			// A function to create the marker and set up the event window. (To add max window, add ", infourl" after category)
	var marker = new GMarker(point,gicons[category]);
	// === Store the category and name info as a marker properties ===
	marker.mycategory = category;                                 
	marker.myname = name;
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html, opts); //(To add max window, add ", {maxUrl:infoUrl}" after html)
		map.setCenter(point, 17);
	} ); // close - GEvent.addlistener
				  
	GEvent.addListener(marker,"mouseover", function() {
		marker.openInfoWindowHtml(html, opts); //(To add max window, add ", {maxUrl:infoUrl}" after html)
	}); // close - GEvent.addlistener
		
	gmarkers.push(marker);
	return marker;
} // close function createMarker


function show(category) { // shows category
		for (var i=0; i<gmarkers.length; i++) {
			if (gmarkers[i].mycategory == category) {
				gmarkers[i].show();
			}
			else 				
			{ 
			gmarkers[i].hide();
			}
			
			// close if
		} // close - for (var i=0; i<gmarkers.length; i++)
}// close - show(category)

function hide(category) { //hides category
		for (var i=0; i<gmarkers.length; i++) {
			if (gmarkers[i].mycategory == category) {
				gmarkers[i].hide();
				
			} 
			
			//close - if (gmarkers[i].mycategory == category)
		} // close - for (var i=0; i<gmarkers.length; i++)
        map.closeInfoWindow(); //closes any open infoWindows
} // close - hide(category)

function hideall() { //hides all markers
		for (var i=0; i<gmarkers.length; i++) {
				gmarkers[i].hide();
		} // close - for (var i=0; i<gmarkers.length; i++)
        map.closeInfoWindow(); //closes any open infoWindows
		makeSidebar();
} // close - hideall()

function myclick(i) { GEvent.trigger(gmarkers[i],"click"); }




function makeSidebar() { //rebuilds the sidebar to match currently displayed markers
	var html = "";
	for (var i=0; i<gmarkers.length; i++) {
		if (!gmarkers[i].isHidden()) {
			html += '<a href="javascript:myclick(' + i + ')">' + gmarkers[i].myname + '</a><br>';
		}// close - for (var i=0; i<gmarkers.length; i++)
	} // close - if (!gmarkers[i].isHidden())
	document.getElementById("side_bar").innerHTML = html;
} // close - makeSidebar

function getdata (xmlurl, category){

map.closeInfoWindow();
  		if (data[category] == 0) { //checks for xml data
      			GDownloadUrl(xmlurl, function (doc) { 				// Downloads xml file
					var xmlDoc = GXml.parse(doc);
					var markers = xmlDoc.documentElement.getElementsByTagName("marker");
					for (var i = 0; i < markers.length; i++) {
					// obtain the attribues of each marker
						var lat = parseFloat(markers[i].getAttribute("lat"));
						var lng = parseFloat(markers[i].getAttribute("lng"));
						var point = new GLatLng(lat,lng);
						var info = markers[i].getAttribute("info");
						//(To add max window, add this line -- var page = markers[i].getAttribute("page"); 
						var name = markers[i].getAttribute("name");
						var html = "<b>"+name+"</b><p>"+info;
						var category = markers[i].getAttribute("category");
						// create the marker
						var marker = createMarker(point,name,html,category); //(To add max window, add ", page" after category)
						map.addOverlay(marker);
						hide(category);
						show(category);
						data[category] = 1;
					}// close - for (var i = 0; i < markers.length; i++)
					makeSidebar(); // == create the initial sidebar ==
      			}); // close - GDownloadUrl
		} // close - if (data = 0)
 
	  else if (data[category] == 1)
	  
	  {
	  show(category);
	  makeSidebar();
	  }
	  

	  
} //end get data
	  
}// close - if browser is compatible
else {alert("Sorry, the Google Maps API is not compatible with this browser")}
	
// Some of this Javascript is based on code provided by the Blackpool Community Church Javascript Team
//http://econym.googlepages.com/index.htm
    
