 //<![CDATA[
 var map;
 var geocoder;

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

     //GEvent.addListener(map,"click", function(overlay, latlng) {     
     //if (latlng) { 
     //  var myHtml = "The GPoint value is: " + (latlng) + "<br /> at zoom level " + map.getZoom();
     //  map.openInfoWindow(latlng, myHtml);
     //}
     //});

     geocoder = new GClientGeocoder();
     var start = new GLatLng(40, -100);
     map = new GMap2(document.getElementById("map"));
     map.addControl(new GSmallMapControl());
     map.addControl(new GMapTypeControl());
     map.setCenter(start, 4);

   }
 }

function fetchDirections() {
  var sidebar = document.getElementById('sidebar');
  sidebar.innerHTML = '';
  
  var fromAdd = document.getElementById('fromAddressInput').value + " " + document.getElementById('fromCityInput').value + " " + document.getElementById('fromStateInput').value + " " + document.getElementById('fromZipInput').value;
  var toAdd = document.getElementById('toAddressInput').value + " " + document.getElementById('toCityInput').value + " " + document.getElementById('toStateInput').value + " " + document.getElementById('toZipInput').value;

  directions = new GDirections(map, sidebar);
  directions.load(fromAdd + " to " + toAdd);

}

function fetchDirectionsFromMap(address) {
  var sidebar = document.getElementById('sidebar');
  sidebar.innerHTML = '';

  var fromAdd = document.getElementById('addressInput').value + " " + document.getElementById('cityInput').value + " " + document.getElementById('stateInput').value + " " + document.getElementById('zipInput').value;
  var toAdd = unescape(address);
  
  directions = new GDirections(map, sidebar);
  directions.load(fromAdd + " to " + toAdd);
}

function searchLocations() {
  var address = document.getElementById('addressInput').value + " " + document.getElementById('cityInput').value + " " + document.getElementById('stateInput').value + " " + document.getElementById('zipInput').value;
  geocoder.getLatLng(address, function(latlng) {
    if (!latlng) {
      alert(address + ' not found');
    } else {
      searchLocationsNear(latlng);
    }
  });
}

function eraseOverlays() {
    map.clearOverlays();
}

function searchLocationsNear(center) {
  var radius = document.getElementById('radiusSelect').value;
  var addr   = document.getElementById('addressInput').value;
  var city   = document.getElementById('cityInput').value;
  var state  = document.getElementById('stateInput').value; 
  var zip    = document.getElementById('zipInput').value;
  var site   = "buy";

  var searchUrl = '/map/phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius + '&addr=' + addr + '&city=' + city + '&state=' + state + '&zip=' + zip + '&site=' + site;

  // alert(searchUrl);

  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 add1 = markers[i].getAttribute('add1');
      var city = markers[i].getAttribute('city');
      var state = markers[i].getAttribute('state');
      var zip = markers[i].getAttribute('zip');
      var distance = parseFloat(markers[i].getAttribute('distance'));
      var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                              parseFloat(markers[i].getAttribute('lng')));
      var items = new Array(markers[i].getAttribute('mp') == 1, markers[i].getAttribute('se') == 1, markers[i].getAttribute('ue') == 1, markers[i].getAttribute('oxy') == 1, markers[i].getAttribute('svc') == 1);
      var address = add1 + " " + city + ", " + state + " " + zip

      var marker = createMarker(point, name, address);
      map.addOverlay(marker);
      var sidebarEntry = createSidebarEntry(marker, name, address, distance, items);
      sidebar.appendChild(sidebarEntry);
      bounds.extend(point);
    }
    map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
  });
}

 function createMarker(point, name, address) {
   var marker = new GMarker(point);
   var html = '<b>' + name + '</b> <br/>' + address + '<br/><a onclick=\'fetchDirectionsFromMap("' + escape(address) + '")\'>Get Directions</a>';
   GEvent.addListener(marker, 'click', function() {
     marker.openInfoWindowHtml(html);
   });
   return marker;
 }

 function createSidebarEntry(marker, name, address, distance, items) {
   var div = document.createElement('div');
   div.style.borderBottom = '1px solid #c8c8c8';
   var div_carries = document.createElement('div');
   div_carries.setAttribute('class','item_images');
   div_carries.style.clear = 'both';
   div_carries.style.height = '23px';

   div_clear = document.createElement('div');
   div_clear.style.clear = 'both';

   images = new Array('mp', 'se', 'ue', 'oxy', 'svc');
   for(var n=0;n<5;n++){
     if(items[n] === true){ 
       this_image = document.createElement('img');
       this_image.style.cssFloat = 'left';
       this_image.style.margin = '0 5px 0 0';
       this_image.setAttribute('src','/skin1/images/template/map_tn_' + images[n] + '.gif');
       this_image.setAttribute('alt', images[n]);
       div_carries.appendChild(this_image);
     }
   }
   
   var bold_name = document.createElement('b');
   bold_name.appendChild(document.createTextNode(name))
   div.appendChild(bold_name);
   div.appendChild(document.createTextNode(' (' + distance.toFixed(1) + ')'));
   div.appendChild(document.createElement('br'));
   div.appendChild(document.createTextNode(address));
   if(div_carries.childNodes.length > 0) {
     div.appendChild(div_carries);
     div.appendChild(div_clear);
   }
   
   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;
 }
 //]]>
