// JavaScript Document

//Find a dealer google maps
/*need a googlemap api key to work
    <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAJQOy7aJFo0D2JLqB4xAVxhSomT8Y2E-vU16rhb9zkn7O1TQJTBQKf9lpCJSj0DivWTFYcOzdo-GYYQ"
            type="text/javascript"></script>

    <script type="text/javascript">
*/

    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(40, -100), 4);
      }
    }

   function searchLocations() {
	   if (document.getElementById('addressInput').value) {
     var address = document.getElementById('addressInput').value;
	   }
	   else {
     var address = '68127';
	   }
     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 = '../../../../jd/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 = '<h2>Sorry, ther are no dealers in your area.</h2><p>Let us know who your favorite tool dealer is and we will contact them.</p><a href="http://douglastool.com/index.php?main_page=contact_us" target="_top">Email us your local tool dealer\'s contact information</a>';
         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 store = markers[i].getAttribute('type');
         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, store);
         map.addOverlay(marker);
         var sidebarEntry = createSidebarEntry(marker, name, address, city, state, zip, phone, distance, store);
         sidebar.appendChild(sidebarEntry);
         bounds.extend(point);
       }
       map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
     });
   }

    function createMarker(point, name, address, city, state, zip, phone, store) {
		if (store =='Texas Tool Traders Inc.') {
		  var marker = new GMarker(point);
		  var html = '<div class="marker"><b>' + store +' '+ name + '</b> <br/>' + address + '<br/>' + city + ', ' + state + ' '+ zip + '<br/>' + phone + '</div>';
		  GEvent.addListener(marker, 'click', function() {
			marker.openInfoWindowHtml(html);
		  });
		  return marker;
		}
		else {
		  var marker = new GMarker(point);
		  var html = '<div class="marker"><b>' + name + '</b> <br/>' + address + '<br/>' + city + ', ' + state + ' '+ zip + '<br/>' + phone + '</div>';
		  GEvent.addListener(marker, 'click', function() {
			marker.openInfoWindowHtml(html);
		  });
		  return marker;
		}
    }

    function createSidebarEntry(marker, name, address, city, state, zip, phone, distance, store) {
	  if (store =='Texas Tool Traders Inc.') {
		var div = document.createElement('div');
		var html = '<div class="info"><span class="dealer">' + store +' '+ name + '</span> (' + distance.toFixed(1) + ')<br/>' + address + '<br/>' + city + ', ' + state + ' '+ zip + '<br/>' + phone + '</div>';
		div.innerHTML = html;
		div.style.cursor = 'pointer';
		div.style.marginBottom = '1px'; 
		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;
	  }
	  else
	  {
		var div = document.createElement('div');
		var html = '<div class="info"><span class="dealer">' + name + '</span> (' + distance.toFixed(1) + ')<br/>' + address + '<br/>' + city + ', ' + state + ' '+ zip + '<br/>' + phone + '</div>';
		div.innerHTML = html;
		div.style.cursor = 'pointer';
		div.style.marginBottom = '1px'; 
		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;
	  }
		  
    }
