    //<![CDATA[

    // TODO - is this really the only way to include .js files?
    // TODO - this doesn't work in IE.  Argh.
    //document.write("<script type=\"text/javascript\" src=\"../googlemaps/commonmapjs.js\"></script>");

var isMozilla;
var xmlhttp;
if (window.XMLHttpRequest) {
    isMozilla = true;
}
// for IE
else if (window.ActiveXObject) {
    isMozilla = false;
}
// TODO - otherwise, alert and abort.

var markerLength = 0;
    var markerArray = new Array();
    var markerTitles = new Array();
    var markerPointsArray = new Array();
    var markerCallbacks = new Array();
    var markerTagStrings = new Array();
    var markerAddresses = new Array();
    var markerCityZips = new Array();
    var markersShown = new Array();
    var markerOption1 = new Array();
    var markerOption2 = new Array();
    var markerLength = 0;
    var tagToCountTable = {};
var centerLatLon = new LatLon(30.334361, -97.746048);
var centerZoom = 6;

function resetMapPosition() {
    map.setCenterByLatLon(centerLatLon, centerZoom);
}

/* Common functions. */
function addMarkerIndex(i) {
    map.addMarkerByLatLon(markerArray[i], markerPointsArray[i]); 
}

function removeMarkerIndex(i) {
    map.removeMarker(markerArray[i]);
}

function getMarkerPointLat(i) {
    return markerPointsArray[i].lat;
}

function getMarkerPointLng(i) {
    return markerPointsArray[i].lon;
}

function createMarker(index, title, caption) {
    var marker = new CustomPOIMarker(index, title, caption, 0xff4500, 0xffffff);
    
    markerCallbacks[index] = function() {
        map.setCenterByLatLon(markerPointsArray[index], 500);
        markerArray[index].open();
        markerArray[index].open();
    }

    return marker;
}

function processMarkers() {
    if (xmlhttp.readyState == 4) {
        var xmlDoc = xmlhttp.responseXML;
        var markers = xmlDoc.documentElement.getElementsByTagName("marker");
        markerLength = markers.length;
        for (var i = 0; i < markers.length; i++) {
            markerPointsArray[i] = new LatLon(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
            markerTitles[i] = markers[i].getAttribute("title");
            markerArray[i] = createMarker(i, markerTitles[i], markers[i].getAttribute("caption"));
            markerAddresses[i] = new String(markers[i].getAttribute("address"));
            markerCityZips[i] = new String(markers[i].getAttribute("cityZip"));
            markerTagStrings[i] = new String(markers[i].getAttribute("tags"));
            addMarkerIndex(i);

            addTagsOfEntry(i, i + " - " + markerTitles[i], markers[i].getAttribute("caption"));
        }
        finishAddingTags();
    }
}

function doRequest(url, async, callback, method, postData) {
    if (isMozilla) {
        xmlhttp = new XMLHttpRequest();
        // http://www.onlamp.com/pub/a/onlamp/2005/05/19/xmlhttprequest.html
        // Some versions of mozilla lock up without this, apparently.
        xmlhttp.overrideMimeType('text/xml');
    } else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (async) {
        xmlhttp.onreadystatechange = callback;
    }
    xmlhttp.open(method, url, async);
    if (method.toUpperCase() == "GET") {
        if (isMozilla) {
            xmlhttp.send(null);
        } else {
            xmlhttp.send();
        }
    } else {
        // We're doing POST.
        xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
        xmlhttp.send(postData);
    }
    if (!async) {
        callback();
    }
}

function refreshMarkers(async, callbackFunc) {
    doRequest(xmlFileName + "?" + Math.random(), async, callbackFunc, "GET", null);
}

// Create a latitude/longitude object
// Display the map centered on that location. Include your application ID ("gregsmap").
var map = new Map("mapContainer", "gregsmap", centerLatLon, centerZoom);
// Make the map draggable
map.addTool( new PanTool(), true );
// Add the Navigator widget
var navWidget = new NavigatorWidget();
map.addWidget(navWidget);
var toolbarWidget = new ToolBarWidget();
map.addWidget(toolbarWidget);

refreshMarkers(true, processMarkers);
    //]]>
