

var iconAvailable = createIcon('/img/map_pointer.png');
var markers = [];

function createIcon(image){
	var icon = new GIcon();
	icon.image = image;
	icon.iconSize = new GSize(26, 38);
	icon.iconAnchor = new GPoint(13, 38);
	icon.infoWindowAnchor = new GPoint(5, 1);
	return icon;
}

function Property(xmlFrag){
	this.id = xmlFrag.getAttribute("id");
	this.displayname = xmlFrag.getAttribute("displayName");
	this.price = xmlFrag.getAttribute("price");
	this.point = new GLatLng(parseFloat(xmlFrag.getAttribute("lat")), parseFloat(xmlFrag.getAttribute("lng")));
	this.hide = true;
}

function load(id, areaId, availableOnly, defaultLat, defaultLng, defaultZoom) 
{
	if (GBrowserIsCompatible())
	{
		var map = new GMap2(document.getElementById("map"));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(defaultLat, defaultLng), defaultZoom);//13 should be about 3.5 miles
		
		var url = "mapxml.php";

		var params = new Array(3);
		params[0] = "id=" + id;
		params[1] = "areaid=" + areaId;
		params[2] = "avail=" + availableOnly;

		url += "?" + params.join("&");

		GDownloadUrl(url, function(data) {
		    var xml = GXml.parse(data);
		    if (xml != null) {
		        var markers = xml.documentElement.getElementsByTagName("marker");
		        for (var i = 0; i < markers.length; i++) {
		            var property = new Property(markers[i]);
		            if (i == 0) {
		                map.panTo(property.point); //pan to first item
		                property.hide = false;
		            }

		            if (property.id > 0) { //dont bother making up for items without an id
		                var marker = createMarker(property);
		                map.addOverlay(marker);
		                var mapLinkDiv = document.getElementById('displayOnMap' + property.id);
		                if (mapLinkDiv != null)
		                    createSidebarEntry(marker, mapLinkDiv);
		            }
		        }
		    }
		});
	}	
}

function createMarker(property) {

    var options = { icon: iconAvailable, hide: property.hide };
    var marker = new GMarker(property.point, options);
	var html = "<div class='marker'><table>";
	html += "<tr><td><b>" + property.displayname + "</b></td><td>" + property.price + "</td></tr>";
	html += "<tr><td colspan=2><a href='property_details.php?id=" + property.id + "'>View Details</a></td></tr>";
	html += "</table></div>";
	markers.push(marker);
	GEvent.addListener(marker, 'click', function() {
	    for (var i = 0; i < markers.length; i++) {
	        markers[i].hide();
	    }
	    marker.show();
	    marker.openInfoWindowHtml(html, { maxWidth: 10 });
	});
	return marker;
}

function createSidebarEntry(marker, mapLinkDiv)
{
	  mapLinkDiv.style.cursor = 'pointer';
	  GEvent.addDomListener(mapLinkDiv, 'click', function() {
	    GEvent.trigger(marker, 'click');
	  });
	}
