var eventMarkers = new Array();
var map;

function onLoad(zlon, zlat, zoomlev) {
  map = new GMap(document.getElementById("map"));
  GEvent.addListener(map, "moveend", function() {
    clearEvents();
    addEvents();
  });
  map.addControl(new GSmallMapControl());
  map.centerAndZoom(new GPoint(zlon, zlat), zoomlev);
}

function addEvents() {
  var bounds = map.getBoundsLatLng();
  var request = GXmlHttp.create();
  var start = document.getElementById('startdate').value;
  var end = document.getElementById('enddate').value;
  request.open("GET", "eventmap/getEvents.php?minlat="+bounds.minY+"&maxlat="+bounds.maxY+"&minlon="+bounds.minX+"&maxlon="+bounds.maxX+"&stdate="+start+"&eddate="+end, true);
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      var xmlDoc = request.responseXML;
      var events = xmlDoc.documentElement.getElementsByTagName("event");
      for (var i = 0; i < events.length; i++) {
        var point = new GPoint(parseFloat(events[i].getAttribute("lon")),
                               parseFloat(events[i].getAttribute("lat")));
        var marker = createMarker(point, events[i]);
        map.addOverlay(marker);
        eventMarkers.push(marker);
      }
    }
  }
  request.send(null);
}

function clearEvents() {
    while(eventMarkers.length > 0) { var m = eventMarkers.pop(); map.removeOverlay(m); }
}

function refreshEvents() {
    clearEvents(map);
    addEvents(map);
}

function createMarker(point, event) {
    var marker = new GMarker(point);
    var id = event.getAttribute('id');
    var title = event.getAttribute('title');
    var date = event.getAttribute('date');
    if (String(event.getAttribute('st')).length > 0) {
        var st = event.getAttribute('st') + ' ' + String(event.getAttribute('stz')).toUpperCase();
    } else {
        var st = '';
    }
    if (String(event.getAttribute('et')).length > 0) {
        var et = event.getAttribute('ed') + ' ' + String(event.getAttribute('edz')).toUpperCase();
    } else {
        var et = '';
    }
    var type = event.getAttribute('type');
    var site = event.getAttribute('site');
    var addr1 = event.getAttribute('addr1');
    var addr2 = event.getAttribute('addr2');
    var city = event.getAttribute('city');
    var state = event.getAttribute('state');
    var zip = event.getAttribute('zip');
    var promo = event.getAttribute('promo');
    
    var html = "<div style=\"white-space: nowrap;\">\n";
    html += "<b>"+title+"</b><br/>\n";
    html += date;
    if (st.length > 0) {
        html += " "+st+" to "+et;
    }
    html += "<br/>\n";
    html += type + "<br/>\n";
    html += addr1;
    if (String(addr2).length >0) html += " / " + addr2;
    html += " / " + city + ", " + state + " " + zip + "<br/>\n";
    if (String(site).length > 0) html += "<a href=\""+site+"\" target=\"_new\">Event Website</a> &mdash; ";
    if (parseInt(promo)) html += "<a href=\"/events/?id="+promo+"\" target=\"_new\">Promotional Website</a> &mdash; ";
    html += "<a href=\"/event_detail.php?id="+id+"&return_to="+escape(document.location.href)+"\" target=\"_new\">View Event Details</a>\n";
    html += "</div>";
    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(html);
    });
    
    return marker;
}

