IncludeJavaScript('http://maps.google.com/maps?file=api&v=2&sensor=false&key=' + key);
window.addEventListener ? window.addEventListener("load", initialize, false) : window.attachEvent("onload", initialize);

// Function to allow one JavaScript file to be included by another.
// Copyright (C) 2006-08 www.cryer.co.uk
function IncludeJavaScript(jsFile) {
    document.write('<script type="text/javascript" src="' + jsFile + '"></scr' + 'ipt>');
}

var map;

function initialize() {
    if (GBrowserIsCompatible()) {
        window.addEventListener ? window.addEventListener("unload", GUnload, false) : window.attachEvent("onunload", GUnload);
        map = new GMap2(document.getElementById("map_canvas"));
        map.setCenter(new GLatLng(centerLattitude, centerLongitude), centerZoomLevel);
        map.setUIToDefault();
        loadMarkers();
    }
}

function createMarker(point, name, address, phone) {
    var marker = new GMarker(point);
    var html = '<b>' + name + '</b> <br/>' + address + '<br/>' + phone;
    GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
    });
    return marker;
}

function loadMarkers() {
    var searchUrl = xmlDataPath;
    GDownloadUrl(searchUrl, function(data) {
        var xml = GXml.parse(data);
        var markers = xml.documentElement.getElementsByTagName('marker');
        map.clearOverlays();

        var bounds = new GLatLngBounds();
        for (var i = 0; i < markers.length; i++) {
            var name = markers[i].getAttribute('name');
            var address = markers[i].getAttribute('address');
            var phone = markers[i].getAttribute('telephone');
            var distance = parseFloat(markers[i].getAttribute('distance'));
            var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                                 parseFloat(markers[i].getAttribute('lng')));

            var marker = createMarker(point, name, address, phone);
            map.addOverlay(marker);
            bounds.extend(point);
        }
    });
}