var added = new Object();
var xmlDoc;
var map;
var baseIcon;

function initBlogMap(lng,lat) {
  if (document.getElementById("map")==null) return;
  baseIcon = new GIcon();
  baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
  baseIcon.image = "http://www.google.com/mapfiles/marker.png";
  baseIcon.iconSize = new GSize(20, 34);
  baseIcon.shadowSize = new GSize(37, 34);
  baseIcon.iconAnchor = new GPoint(9, 34);
  baseIcon.infoWindowAnchor = new GPoint(9, 2);
  baseIcon.infoShadowAnchor = new GPoint(18, 25);
  map = new GMap(document.getElementById("map"));
  map.addControl(new GMapTypeControl());
  map.addControl(new GLargeMapControl());
  if (lat==0) {
    map.centerAndZoom(new GPoint(-95.677068,37.0625),14);
  } else {
    map.centerAndZoom(new GPoint(-lng,lat), 7);
  }
  GEvent.addListener(map, "moveend", getData);
  GEvent.addListener(map, "zoom", onZoom);
  getData();
}

function onZoom() {
  map.clearOverlays();
  added = new Object();
  getData();
}

function getData() {
  var bounds = map.getBoundsLatLng();
  var request = GXmlHttp.create();
  request.open("GET", "/mapdata.xml?minX="+bounds.minX+"&minY="+bounds.minY+"&maxX="+bounds.maxX+"&maxY="+bounds.maxY, true);
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      xmlDoc = request.responseXML;
      var markers = xmlDoc.documentElement.getElementsByTagName("marker");
      if (markers.length>99)
        document.getElementById('warning').style.visibility="visible";
      else 
        document.getElementById('warning').style.visibility="hidden";
      for (var i = 0; i < markers.length; i++) {
        if (added[markers[i].getAttribute("user")]==null) {
          var point = new GPoint(parseFloat(markers[i].getAttribute("lng")),parseFloat(markers[i].getAttribute("lat")));
          var marker = createMarker(point, i);
          map.addOverlay(marker);
        }
        added[markers[i].getAttribute("user")]=1;
      }
    }
  } 
  request.send(null);
}


function createMarker(point, index) {
  var node = xmlDoc.documentElement.getElementsByTagName("marker")[index];
  var user = node.getAttribute("user");
  var icon = new GIcon(baseIcon);
  var marker = new GMarker(point, icon);
  var html = '<table width=190><tr><td>';
  html += '<a href="/network/'+user+'"><img align=left height=66 width=50 style="border:1px solid black;" src="/userpics/small/'+node.getAttribute("pic")+'.jpg"></a>';
  html += '</td><td>';
  html += '<center><div class="msuser">'+user+'</div>';
  html += '<br><br><nobr><a href="/network/'+user+'">Profile</a> | <a href="http://'+user+'.mindsay.com/">Blog</a></nobr>';
  html += '</center></td></tr></table>';
  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(html);
  });
  return marker;
}