//<![CDATA[
var map;
var geocoder;

// Create a base icon for all of our markers that specifies the
// shadow, icon dimensions, etc.
/*
var baseIcon = new GIcon(G_DEFAULT_ICON);
baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
baseIcon.iconSize = new GSize(20, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
*/

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 + ' Please make sure to enter your zip code!');
   } else {
	 searchLocationsNear(latlng);
   }
 });
}

function searchLocationsNear(center) {
 var radius = document.getElementById('radiusSelect').value;
 var dealerType = document.getElementById('dealerType').value;
 var searchUrl = '/includes/inc_dealer_locator.cfm?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius + '&dealerType=' + dealerType;
 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 telephone = markers[i].getAttribute('telephone');
	 var website = markers[i].getAttribute('website');
	 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, address, telephone, website);
	 map.addOverlay(marker);
	 var sidebarEntry = createSidebarEntry(marker, name, address, telephone, distance);
	 sidebar.appendChild(sidebarEntry);
	 bounds.extend(point);
   }
   map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
 });
}

function createMarker(point, name, address, telephone, website) {
  var marker = new GMarker(point);
  var html = '<b>' + name + '</b> <br/>' + address + '<br/><b>Phone:</b> ' + telephone;
  
  if (website.length > 0) {
  	html = html + '<br /><b>Web:</b> ' + '<a href="http://' + website + '">' + website + '</a>';
  
  }
  
  GEvent.addListener(marker, 'click', function() {
	marker.openInfoWindowHtml(html);
  });
  return marker;
}

function createSidebarEntry(marker, name, address, telephone, distance) {
  var div = document.createElement('div');
  var html = '<b>' + name + '</b> (' + distance.toFixed(1) + 'mi)<br/><b>Phone:</b> ' + telephone + '<br />' + address;
  div.innerHTML = html;
  div.style.cursor = 'pointer';
  div.style.marginBottom = '10px'; 
  GEvent.addDomListener(div, 'click', function() {
	GEvent.trigger(marker, 'click');
  });
  GEvent.addDomListener(div, 'mouseover', function() {
	div.style.backgroundColor = '#ccc';
  });
  GEvent.addDomListener(div, 'mouseout', function() {
	div.style.backgroundColor = '#fff';
  });
  return div;
}
//]]>