// JavaScript Document
    
    function hideMap() {
    	var map = document.getElementById("mapContainer");
    	var online = document.getElementById("onlineContainer");
    	map.style.display = "none";
    	online.style.display = "block";
    } 
    
    function showMap() {
    	var map = document.getElementById("mapContainer");
    	var online = document.getElementById("onlineContainer");
    	map.style.display = "block";
    	online.style.display = "none";
    } 
    
    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());
		searchLocationsNearby();
		searchOnline();
      }
    }

   function searchLocations() {
     var address = document.getElementById('addressInput').value;
     geocoder.getLatLng(address, function(latlng) {
       if (!latlng) {
         alert("No retailers were found within the radius you've selected, please expand the radius or try a different address to search.");
       } else {
         searchLocationsNear(latlng);
       }
     });
   }

   function searchLocationsNear(center) {
     var radius = document.getElementById('radiusSelect').value;
     var searchUrl = 'phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
     GDownloadUrl(searchUrl, function(data) {
       var xml = GXml.parse(data);
       markers = xml.documentElement.getElementsByTagName('marker');
       map.clearOverlays();
       var sidebar = document.getElementById('results');
       sidebar.innerHTML = '';
       if (markers.length == 0) {
         sidebar.innerHTML = "No retailers were found within the radius you've selected, please expand the radius or try a different address to search.";
         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 city = markers[i].getAttribute('city');
         var state = markers[i].getAttribute('state');
         var zip = markers[i].getAttribute('zip');
         var phone = markers[i].getAttribute('phone');
         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, city, state, zip, phone, website);
         map.addOverlay(marker);
         var sidebarEntry = createSidebarEntry(marker, name, address, city, state, zip, phone, website, distance);
         sidebar.appendChild(sidebarEntry);
         bounds.extend(point);
       }
       if (map.getBoundsZoomLevel(bounds) < 13) {
        map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
       } else {
        map.setCenter(bounds.getCenter(),13);
       }     
       });
   }

    function createMarker(point, name, address, city, state, zip, phone, website) {
      var baseIcon = new GIcon(G_DEFAULT_ICON);
      baseIcon.image = "images/map/marker.png";
      baseIcon.iconSize = new GSize(32, 32);
      baseIcon.iconAnchor = new GPoint(9, 34);
      baseIcon.infoWindowAnchor = new GPoint(9, 2);
      
      var marker = new GMarker(point, baseIcon);
      var html = '<b>' + name + '</b> <br/>' + address + '<br/>' + city + ', ' + state + ' ' + zip;
      if (phone.length != 0) {
      	var html = html + '<br/>' + phone; 	  
      }
      
      
      if (website.length != 0) {
      	var html = html +  "<br/><br/><a href='" + website + "'>Web Site</a>";
      } 
      
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
    }

    function createSidebarEntry(marker, name, address, city, state, zip, phone, website, distance) {
      var div = document.createElement('div');
	  var start = document.getElementById('addressInput').value;
      var html = "<b>" + name + "</a></b> (" + distance.toFixed(1) + " miles)<br/>" + address + "<br/>" + city + ", " + state + " "+ zip;	  
      
      if (phone.length != 0) {
	  	var html = html +  "<br/>" + phone + "<br/>"; 	  
	  }
	  
	  var html = html + "<br/><a href='http://maps.google.com/maps?saddr=" + start + "&daddr=" + address + " " + city + ", " + state + " " + zip + "'>Get Directions </a>";
	  
	  if (website.length != 0) {
	  	var html = html +  "<br/><a href='" + website + "'>Web Site</a>";
	  } 
	  
      div.innerHTML = html;
      div.style.cursor = 'pointer';
      div.style.marginBottom = '5px'; 
      div.style.borderBottom='1px solid #D4D4D4';
      div.style.paddingBottom='5px';
      GEvent.addDomListener(div, 'click', function() {
        GEvent.trigger(marker, 'click');
      });
      return div;
    }
	
   function searchLocationsNearby() {
   	var radius = "26";
    if (google.loader.ClientLocation &&
        google.loader.ClientLocation.address.country_code == "US" &&
        google.loader.ClientLocation.address.region) {
    
    	var searchUrl = 'phpsqlsearch_genxml.php?lat=' + google.loader.ClientLocation.latitude + '&lng=' +  google.loader.ClientLocation.longitude + '&radius=' + radius;
     	GDownloadUrl(searchUrl, function(data) {
       		var xml = GXml.parse(data);
       		var markers = xml.documentElement.getElementsByTagName('marker');
       		map.clearOverlays();
       		var sidebar = document.getElementById('results');
       		sidebar.innerHTML = '';
       		if (markers.length == 0) {
        		sidebar.innerHTML = "No retailers were found within the radius you've selected, please expand the radius or try a different address to search.";
         		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 city = markers[i].getAttribute('city');
       			var state = markers[i].getAttribute('state');
       			var zip = markers[i].getAttribute('zip');
	     		var phone = markers[i].getAttribute('phone');
         		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, city, state, zip, phone, website);
         		map.addOverlay(marker);
         		var sidebarEntry = createSidebarEntry(marker, name, address, city, state, zip, phone, website, distance);
         		sidebar.appendChild(sidebarEntry);
         		bounds.extend(point);
       		}
        	if (map.getBoundsZoomLevel(bounds) < 13) {
        		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
        	} else {
        		map.setCenter(bounds.getCenter(),13);
        	}
         
		});
     
	} else {
	    var sidebar = document.getElementById('results');
	    sidebar.innerHTML = '';
	    sidebar.innerHTML = "No retailers were found within the radius you've selected, please expand the radius or try a different address to search.";
   	    map.setCenter(new GLatLng(40, -100), 4);
        return;
     }     
   }
   
   function searchOnline() {
        var searchUrl = 'phpsqlsearch_online.php';
        GDownloadUrl(searchUrl, function(data) {
          var xml = GXml.parse(data);
          markers = xml.documentElement.getElementsByTagName('marker');
          var onlineList = document.getElementById('onlineList');
          onlineList.innerHTML = '';
          if (markers.length == 0) {
            onlineList.innerHTML = 'No results found.';
            return;
          }
   
          for (var i = 0; i < markers.length; i++) {
            var name = markers[i].getAttribute('name');
            var website =markers[i].getAttribute('website');
            var logo =markers[i].getAttribute('logo');
            
            var resultList = createResultList(name, website, logo);
            onlineList.appendChild(resultList);
            
          }
          
        });
      }
   
function createResultList(name, website, logo) {
  var div = document.createElement('div');
  var html = "<a href='" + website + "'>" + name + "</a>";	  
  div.innerHTML = html;
  div.style.cursor = 'pointer';
  div.style.marginBottom = '5px'; 
  div.style.borderBottom='1px solid #D4D4D4';
  div.style.paddingBottom='5px';
  
  return div;
}