var map = null;
var markers = new Array();

function LoadMapsApi()
{
    google.load("maps", "2", {"callback" : MapsLoaded});
}

function MapsLoaded()
{
    var ndMap = document.getElementById("map");
    if (!ndMap)
        return false;
    
    gMaps = google.maps;
    map = new gMaps.Map2(ndMap);
    map.enableContinuousZoom();
    map.addControl(new GLargeMapControl());
 
    LoadData();
}		

function LoadData()
{
	if (xmlData == '')
	{
		ShowMaxMiniLocations();
		return;
	}
	
	var xmlDom = CreateXmlDom(xmlData);
    
    if (!xmlDom)
        return;
        
	var listings = xmlDom.getElementsByTagName("listing");
	
	if (listings.length > 0)
		DisplayMarkers(listings);
	   
}

function DisplayMarkers(listings)
{

    //var bounds = new GLatLngBounds();
    
    for (var i = 0; i < listings.length; i++)
    {
    	var lat = GetNodeValue(listings[i], "latitude");
    	var lng = GetNodeValue(listings[i], "longitude");
    	
    	//bounds.extend(new GLatLng(lat, lng));
    	var marker = AddMarker(lat, lng);
    	var icon = marker.getIcon();
    	var letter = String.fromCharCode(i + 65);
    	marker.setImage("http://www.google.com/mapfiles/marker" + letter + ".png");
    	//icon.image = 
    	icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
    	
    	var htmlData = GetNodeValue(listings[i], "htmlData")
    	
    	if (listings[i].getAttribute("openinfo") == "true" && htmlData)
    	{
    		marker.openInfoWindowHtml(htmlData);
    	}
    	
    	if (htmlData)
    	{
    		marker.htmlData = htmlData;
    		GEvent.addListener(marker, 'click', function () {
    			map.panTo(new GLatLng(lat, lng));
    			this.openInfoWindowHtml(this.htmlData);
    		});
    	}
    	
    	markers[i] = marker;
	}
	
    map.setCenter(new GLatLng(40.722998,-73.932152), 14);
		
}

function ShowMaxMiniLocations()
{
	var marker = AddMarker("40.730119", "-73.95517");
	var greenpointHtml = "<h4 style='margin-top: 0px;'>Max Mini Greenpoint Office</h4><address>121 Greenpoint Ave, Brooklyn, NY 11222</address><div>Phone: (718) 609-0800</div>"
	
	marker.openInfoWindowHtml(greenpointHtml);
	
	GEvent.addListener(marker, 'click', function () {
		this.openInfoWindowHtml(greenpointHtml);
	});
    
	map.setZoom(16);
}

function AddMarker(lat, lng)
{
		var latLng = new GLatLng(lat, lng);
		
		if (!map.isLoaded())
            map.setCenter(latLng, 13); 
        
        var marker = new GMarker(latLng);
        
        map.addOverlay(marker);
        
        return marker;
}

function openInfo(i)
{
	map.panTo(markers[i].getPoint());
	markers[i].openInfoWindowHtml(markers[i].htmlData);
}

function GetNodeValue(xmlParentNode, nodeName)
{
    var xmlNode = xmlParentNode.getElementsByTagName(nodeName);
    
    if (xmlNode.length == 0)
        return false;
    
    if (!xmlNode[0].firstChild)
        return false;
    
    return xmlNode[0].firstChild.nodeValue;
}
