    var map;
    var geocoder;

	function onload_everything() {
		load();
		preloadImages();
	}

    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() {
     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 searchUrl = 'gmaps_xml_generator.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
     GDownloadUrl(searchUrl, function(data) {
       var xml = GXml.parse(data);
       var markers = xml.getElementsByTagName('marker');
    
    	map.clearOverlays();

       var sidebar = document.getElementById('sidebar');
       sidebar.innerHTML = '';
       if (markers.length == 0) {
       	 var center = map.getCenter();
		 document.getElementById('map_message').style.display = '';
		 document.getElementById('map_container').style.display = 'none';
		 map.checkResize();
		 map.setCenter(center);
       	
         map_message.innerHTML = 'We do not currently have a retail outlet in the zip code and radius you selected.  You can try increasing the radius and searching again.  <br><br>If you know of a store within your area that you think we should contact about carrying our line, please <a href="mailto:info@peaceloveearth.com">email us</a>.  If they end up carrying it, we will send you a special gift.';
         //map.setCenter(new GLatLng(40, -100), 4);
         return;
       } else {
       		var center = map.getCenter();
			document.getElementById('map_container').style.display = '';
			map.checkResize();
			map.setCenter(center);
		
			document.getElementById('map_message').style.display = 'none';
			document.getElementById('map_message').innerHTML = '';
       }
       
       //alert(document.getElementById('map_container').style.display);

       var bounds = new GLatLngBounds();
       for (var i = 0; i < markers.length; i++) {
         var name = markers[i].getAttribute('name');
         var url = markers[i].getAttribute('url');
         var phone = markers[i].getAttribute('phone');
         var address = markers[i].getAttribute('address');
         
         var display_address = markers[i].getAttribute('display_address');
         var display_address2 = markers[i].getAttribute('display_address2');
         var display_city = markers[i].getAttribute('display_city');
         var display_state = markers[i].getAttribute('display_state');
         var display_zip = markers[i].getAttribute('display_zip');
         
         var distance = parseFloat(markers[i].getAttribute('distance'));
         var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                                 parseFloat(markers[i].getAttribute('lng')));
         
         var marker = createMarker(point, name, display_address, display_address2, url, phone, display_city, display_state, display_zip);
         map.addOverlay(marker);
         var sidebarEntry = createSidebarEntry(marker, name, display_address, display_address2, distance, url, phone, display_city, display_state, display_zip);
         sidebar.appendChild(sidebarEntry);
         bounds.extend(point);
       }
       map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
     });
   }

        var gmarkers = [];
      var htmls = [];
      var to_htmls = [];
      var from_htmls = [];
      var i=0;
   function createMarker(point, name, address, address2, url, phone, display_city, display_state, display_zip) {

     var marker = new GMarker(point);
      var html = '<span style="font-size: 11px; color: #000;"><b>';
      
 //     if(url != 'http://')
//	      html += '<a href="' + url + '"  target="_window">' + name + '</a>';
//	  else
	      html += '<a href="http://maps.google.com/maps?daddr=' + address + '%20' + display_city + ',%20' + display_state + '%20%20' + display_zip + '"  target="_window">' + name + '</a>';
      
      html += '</b><br/>';
      
      if(address)
	      html += address + '<br/>';
      
      if(address2)
	      html += address2 + '<br/>';

      html += display_city + ', ' + display_state + ' ' + display_zip + '<br/>' + phone + '<br /><a target="_blank" href="http://maps.google.com/maps?daddr=' + address + '%20' + display_city + ',%20' + display_state + '%20%20' + display_zip + '">Directions</a></span>';

     GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
    }

    function createSidebarEntry(marker, name, address, address2, distance, url, phone, display_city, display_state, display_zip) {
      var div = document.createElement('div');
	  var html = '<b>';
      
//      if(url != 'http://')
//	      html += '<a href="' + url + '"  target="_window">' + name + '</a>';
//	  else
	      html += '<a href="http://maps.google.com/maps?daddr=' + address + '%20' + display_city + ',%20' + display_state + '%20%20' + display_zip + '"  target="_window">' + name + '</a>';
      
            html += '</b><br/>';
      
      if(address)
	      html += address + '<br/>';
      
      if(address2)
	      html += address2 + '<br/>';
      
      html += display_city + ', ' + display_state + ' ' + display_zip + '<br/>' + phone;
      
      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;
    }
    
      // functions that open the directions forms
      function tohere(i) {
        gmarkers[i].openInfoWindowHtml(to_htmls[i]);
      }
      function fromhere(i) {
        gmarkers[i].openInfoWindowHtml(from_htmls[i]);
      }

    function submitFormOnEnter(ev) {
		keystroke=((ev.which)||(ev.keyCode));

		switch(keystroke) {
			case 13:
   			searchLocations();
   			break;
  		}
 	}
    //]]>