    var map;
    var geocoder;

    function load() {
      if (GBrowserIsCompatible()) {
        geocoder = new GClientGeocoder();
        map = new GMap2(document.getElementById('map'));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(40, -100), 4);
      }
    }

   function searchLocations(url) {

     var address = document.getElementById('addressInput').value;
    if (document.getElementById('eventCategory')){
        var category = document.getElementById('eventCategory').options[document.getElementById('eventCategory').selectedIndex].value;
     }
     else{
        var category = 0;
     } 

    if (address){	

     geocoder.getLatLng(address, function(latlng) {
       
       if (!latlng) {
         alert(address + ' not found');
       } else {
         searchLocationsNear(url, latlng);
       }
     });

     }else{
	if (category){
		window.location = "local_event.php?id="+category;
	}else{
		alert('Please enter your address');
	}
     }
   }

   function searchLocationsNear(url, center) {
     if (document.getElementById('radiusSelect')){
     	var radius = document.getElementById('radiusSelect').value;
     }
     else{
     	var radius = 200;
     }
     
     if (document.getElementById('eventCategory')){
     	var category = document.getElementById('eventCategory').options[document.getElementById('eventCategory').selectedIndex].value;
     }
     else{
     	var category = 0;
     }
		
     var searchUrl = url + '?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius + '&cat=' + category;
     GDownloadUrl(searchUrl, function(data) {
       var xml = GXml.parse(data);
       var markers = xml.documentElement.getElementsByTagName('marker');
       map.clearOverlays();
       var sidebar = document.getElementById('sidebar');
       sidebar.innerHTML = '';
       if (markers.length == 0) {
         sidebar.innerHTML = 'No results found.';
         map.setCenter(new GLatLng(40, -100), 4);
         return;
       }

       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 distance = parseFloat(markers[i].getAttribute('distance'));
         var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                                 parseFloat(markers[i].getAttribute('lng')));
         var website = markers[i].getAttribute('website');
         var phone = markers[i].getAttribute('phone');
         var event_id = markers[i].getAttribute('event_id');
         var event_date = markers[i].getAttribute('date');
         
         var marker = createMarker(point, name, address,event_id);
         map.addOverlay(marker);
         var sidebarEntry = createSidebarEntry(marker, name, address, distance, website, phone, event_id, event_date);
         sidebar.appendChild(sidebarEntry);
         bounds.extend(point);
       }
       map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
     });
   }

    function createMarker(point, name, address, event_id) {
      var marker = new GMarker(point);
      var html = '<small><b>' + name + '</b> <br/>' + address;
      html += "<br /><a href='event_detail.php?id=" + event_id + "'>Details</a><br/><br/></small>";	
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
    }

    function createSidebarEntry(marker, name, address, distance, website, phone, event_id, event_date) {
      var div = document.createElement('div');
      var html = '<b>' + name + '</b> (' + distance.toFixed(1) + ' miles)<br/>' + address + "<br/>";
      if (event_date){
      	//html += event_date + "<br/>";
      }
      
      if (phone){
      	html += phone + "<br/>";
      }
      
      if (website){
      	html += "<a href='" + website + "' target='_blank'>" + website + "</a>" + "<br/>";
      }
      if (event_id!=null){
	      html += "<a href='event_detail.php?id=" + event_id + "'>Details</a><br/><br/>";
      }
      
      div.innerHTML = html;
      div.style.cursor = 'pointer';
      div.style.marginBottom = '5px'; 
      GEvent.addDomListener(div, 'click', function() {
        GEvent.trigger(marker, 'click');
      });
      GEvent.addDomListener(div, 'mouseover', function() {
        div.style.backgroundColor = '#eee';
      });
      GEvent.addDomListener(div, 'mouseout', function() {
        div.style.backgroundColor = '#fff';
      });
      return div;
    }


	function loadLocations(url) {
     GDownloadUrl(url, function(data) {
       var xml = GXml.parse(data);
       var markers = xml.documentElement.getElementsByTagName('marker');
       map.clearOverlays();
       var sidebar = document.getElementById('sidebar');
       sidebar.innerHTML = '';
       if (markers.length == 0) {
         sidebar.innerHTML = 'No results found.';
         map.setCenter(new GLatLng(40, -100), 4);
         return;
       }

       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 distance = parseFloat(markers[i].getAttribute('distance'));
         var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                                 parseFloat(markers[i].getAttribute('lng')));
         
         var website = markers[i].getAttribute('website');
         var phone = markers[i].getAttribute('phone');
         var event_id = markers[i].getAttribute('event_id');
         var event_date = markers[i].getAttribute('date');
         var marker = createMarker(point, name, address, event_id);
         map.addOverlay(marker);
         var sidebarEntry = createSidebarEntry(marker, name, address, distance, website, phone, event_id, event_date);
         sidebar.appendChild(sidebarEntry);
         bounds.extend(point);
       }
       map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
     });
   }

