var LatValue, LongValue, MapID, html, zoomlevel      
var googlemarkers = [];
var gicons = [];

gicons["pubs"] = new GIcon(G_DEFAULT_ICON,"design_images/marker-blue.png");
gicons["parks"] = new GIcon(G_DEFAULT_ICON,"design_images/marker-green.png");
gicons["cash"] = new GIcon(G_DEFAULT_ICON,"design_images/marker-red.png");
gicons["hotels"] = new GIcon(G_DEFAULT_ICON,"design_images/marker-yellow.png");

var newmap

zoomlevel=15
LatValue=52.6263
LongValue=1.2768
MapID="map1"


function createMarker(point,name,html,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);
        });
        googlemarkers.push(marker);
        return marker;
}


function show(category) {
        for (var i=0; i<googlemarkers.length; i++) {
          if (googlemarkers[i].mycategory == category) {
            googlemarkers[i].show();
          }
        }
        // clear the checkbox on the actual map page
        document.getElementById(category+"box").checked = true;
}

function hide(category) {
        for (var i=0; i<googlemarkers.length; i++) {
          if (googlemarkers[i].mycategory == category) {
            googlemarkers[i].hide();
          }
        }
        // clear the checkbox on the actual map page
        document.getElementById(category+"box").checked = false;
        // close the info popup window if open
        newmap.closeInfoWindow();
}

// a checkbox has been clicked from the main map page
function boxclick(box,category) {
	if (box.checked) {
		show(category);
	} else {
		hide(category);
	}
}


function load() {
      if (GBrowserIsCompatible()) {

	newmap = new GMap2(document.getElementById(MapID));
        newmap.setCenter(new GLatLng(LatValue,LongValue), zoomlevel);

	add_Controls(newmap)

      	// Read the data
      	GDownloadUrl("uploaded_files/categories.xml", function(doc) {
        	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 address = markers[i].getAttribute("address");
          		var name = markers[i].getAttribute("name");
          		var html = "<b>"+name+"<\/b><p>"+address;
          		var category = markers[i].getAttribute("category");
          		// create the marker
          		var marker = createMarker(point,name,html,category);
          		newmap.addOverlay(marker);
        	}
      	});

	setTimeout("HideCats()",1000);

       	hide("pubs");
       	hide("parks");
       	hide("cash");
       	hide("hotels");

	}
}

function HideCats(){
       	hide("pubs");
       	hide("parks");
       	hide("cash");
       	hide("hotels");
}

function add_Controls(MapID){
	MapID.addControl(new GSmallMapControl());
        MapID.addControl(new GMapTypeControl());
	MapID.addControl(new GOverviewMapControl());
	MapID.addControl(new GScaleControl());
}

