//<![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 GMapTypeControl());

	map.setCenter(new GLatLng(45.579881, -73.746736), 6);

		

	

	// default location 

	

	setDefaultLocations();

  }

}



function setDefaultLocations() { 

 var radius = '3500';

 var searchUrl = '/js/ajax/phpsqlsearch_genxml.php?lat=45.579881&lng=-73.746736&radius=' + radius;

 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(45.579881, -73.746736), 6);

	 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 phone = markers[i].getAttribute('phone');

	 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, phone);

	 map.addOverlay(marker);

	 var sidebarEntry = createSidebarEntry(marker, name, address, distance, phone);

	 sidebar.appendChild(sidebarEntry);

	 bounds.extend(point);

   }

   map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)-1);

 });



}





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 = '/js/ajax/phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;

 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(45.579881, -73.746736), 10);

	 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 phone = markers[i].getAttribute('phone');

	 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, phone);

	 map.addOverlay(marker);

	 var sidebarEntry = createSidebarEntry(marker, name, address, distance, phone);

	 sidebar.appendChild(sidebarEntry);

	 bounds.extend(point);

   }

   map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));

 });

}



function createMarker(point, name, address, phone) {





  var marker = new GMarker(point); //, options);

  var html = (name == 'Beds'?'': '<img src="/images/essentia-logo-sig.jpg" alt="" /><br/>')+'<b>' + name + '</b> <br/>' + address.replace(',','<br/>') + '<br/>' + phone;

  GEvent.addListener(marker, 'click', function() {

	marker.openInfoWindowHtml(html);

  });

  return marker;

}



function createSidebarEntry(marker, name, address, distance, phone) {

  var div = document.createElement('div');

  var html = '<b>' + name + '</b> (' + distance.toFixed(1) + ')'+

  (name == 'Beds'?'': '<img src="/images/essentia-flower.gif" alt="" />&nbsp;')+

  '<br/>' + address.replace(',','<br/>') + '<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;

}

//]]>

