var map;
    var geocoder;

    function load() {
      if (GBrowserIsCompatible()) {
        geocoder = new GClientGeocoder();
        map = new GMap2(document.getElementById('map'));
        map.addControl(new GLargeMapControl3D());
        map.addControl(new GMenuMapTypeControl());
        map.addControl(new GScaleControl()); 
        map.setCenter(new GLatLng(40, -100), 4);
      }
    }

   function searchLocations() {
     var address = document.getElementById('addressInput').value;
     geocoder.getLatLng(address, function(latlng) {
       if (!latlng) {
         alert(address + ' not found');
       } else {
         searchLocationsNear(latlng);
       }
     });
   }

   function searchLocationsNear(center) {
     var radius = document.getElementById('radiusSelect').value;
	 var isActive = get_check_value('isActive');
	 var isCertified = get_check_value('isCertified');
	 var hasURL = get_check_value('hasURL');
	 var hasPC = get_check_value('hasPC');
	 var hasX360 = get_check_value('hasX360');
	 var hasPS3 = get_check_value('hasPS3');
	 var hasWii = get_check_value('hasWii');
	 
     var searchUrl = '/lanmap/map_xml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius + '&isActive=' + isActive + '&isCertified=' + isCertified + '&hasURL=' + hasURL + '&hasPC=' + hasPC + '&hasX360=' + hasX360 + '&hasPS3=' + hasPS3 + '&hasWii=' + hasWii;
     GDownloadUrl(searchUrl, function(data) {
       var xml = GXml.parse(data);
       var markers = xml.documentElement.getElementsByTagName('marker');
       map.clearOverlays();

       var sidebar = document.getElementById('mapsidebar');
       sidebar.innerHTML = '';
       if (markers.length == 0) {
         sidebar.innerHTML = 'No results found.<br/>'+searchURL;
         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 city = markers[i].getAttribute('city');
		 var state = markers[i].getAttribute('state');
		 var zip = markers[i].getAttribute('zip');
		 
		 var opened = markers[i].getAttribute('opened');
		 var updated = markers[i].getAttribute('updated');
		 var phone = markers[i].getAttribute('phone');
		 var active = markers[i].getAttribute('active');
		 var url = markers[i].getAttribute('url');
		 var pc = markers[i].getAttribute('pcs');
		 var x360 = markers[i].getAttribute('x360');
		 var ps3 = markers[i].getAttribute('ps3');
		 var wii = markers[i].getAttribute('wii');
		 var record = markers[i].getAttribute('record');
         
		 var stations = "<b>PC:</b> "+ pc + " <b>X360:</b> " + x360 + " <b>PS3:</b> "+ps3+" <b>Wii:</b> " + wii;
         var marker = createMarker(point, name, address, city, state, zip, opened, updated, phone, active, url, stations, record);
         map.addOverlay(marker);
         var sidebarEntry = createSidebarEntry(marker, name, address, distance, city, state, zip, record);
         sidebar.appendChild(sidebarEntry);
         bounds.extend(point);
       }
       map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
     });
   }
   
   function get_check_value(id) {
       if(document.getElementById(id).checked) {
          return document.getElementById(id).value;
       } else {
          return 0;
       }
   }
    function createMarker(point, name, address, city, state, zip, opened, updated, phone, active, url, stations, record) {
      var marker = new GMarker(point);
      var html = '<h2>' + name + '</h2> <br/><h3>' + address + "<br/>" + city + ", " + state + " " + zip + "</h3><br/><b>Phone:</b>"+phone+"<br/><b>Opened:</b> "+opened+"<br/>"+stations+'<br/><a href="'+url+'">Visit Website</a><br/><a href="/lanmap/browse?record='+record+'">View detail</a>';
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
    }

    function createSidebarEntry(marker, name, address, distance, city, state, zip, record) {
      var div = document.createElement('div');
      var html = '<a href="/lanmap/browse?record='+record+'"><b>' + name + '</b></a> (' + distance.toFixed(1) + ' miles)<br/>' + address + '<br/>' + city + ', ' + state + ' ' + zip;
      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;
    }
