	var geocoder;
	var map;
	var originPoint;
	var originAddress;
	//var markerhtml[];

	
    var iconPetSense = new GIcon(); 
    //iconPetSense.image = 'http://labs.google.com/ridefinder/images/mm_20_blue.png';
    iconPetSense.image = "/z_images/PetsenseMapIcon.png";
    iconPetSense.shadow = '/z_images/PetsenseMapShadow.png';
    //iconPetSense.iconSize = new GSize(12, 20);
    /*iconPetSense.iconSize = new GSize(25, 36);
    iconPetSense.shadowSize = new GSize(22, 20);
    iconPetSense.iconAnchor = new GPoint(11, 35);
    iconPetSense.iconAnchor = new GPoint(6, 20);*/
	
	iconPetSense.iconSize = new GSize(23.0, 37.0);
    iconPetSense.shadowSize = new GSize(42.0, 37.0);
    iconPetSense.iconAnchor = new GPoint(11.0, 18.0);
    iconPetSense.infoWindowAnchor = new GPoint(11.0, 18.0);

    //iconPetSense.infoWindowAnchor = new GPoint(5, 1);

    var iconRed = new GIcon(); 
    iconRed.image = 'http://labs.google.com/ridefinder/images/mm_20_red.png';
    //	iconRed.image = "/z_images/PetsenseMapIcon.png";
    iconRed.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
    iconRed.iconSize = new GSize(12, 20);
    iconRed.shadowSize = new GSize(22, 20);
    iconRed.iconAnchor = new GPoint(6, 20);
    iconRed.infoWindowAnchor = new GPoint(5, 1);

    var customIcons = [];
    customIcons["factoryoutlet"] = iconPetSense;
    customIcons["factorydirect"] = iconPetSense;
	
	

    function load() {
      if (GBrowserIsCompatible()) {
		geocoder = new GClientGeocoder();
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
		map.enableScrollWheelZoom();
        map.setCenter(new GLatLng(39.504153, -94.928521), 4);

        GDownloadUrl("/sl/mapsxml.php", function(data) {
          var xml = GXml.parse(data);
          var markers = xml.documentElement.getElementsByTagName("marker");
          for (var i = 0; i < markers.length; i++) {
            var name = markers[i].getAttribute("name");
            var address = markers[i].getAttribute("address");
			var address2 = markers[i].getAttribute("address2");
			var city = markers[i].getAttribute("city");
			var state = markers[i].getAttribute("state");
			var zip = markers[i].getAttribute("zip");
			var tel = markers[i].getAttribute("tel");
			var hours = markers[i].getAttribute("hours");
            var type = markers[i].getAttribute("type");
            var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                    parseFloat(markers[i].getAttribute("lng")));
			var markerdata = new Array(name, address, address2, city, state, zip, tel, type, hours)
            var marker = createMarker(point, markerdata);
            map.addOverlay(marker);
          }
        });
      }
    }

    function createMarker(point, markerdata) {
      var marker = new GMarker(point, customIcons[markerdata[7]]);
      var html = "<b>" + markerdata[0] + "</b> <br/>" + markerdata[1];
	  if(markerdata[2] != "")
	  {
		html = html + "<br/>" + markerdata[2];
	  }
	  html = html + "<br/>" + markerdata[3] + ", " + markerdata[4] + " " + markerdata[5];
	  html = html + "<br/>" + markerdata[6] + "<br />&nbsp;<br /><strong>Store Hours</strong><br />" + markerdata[8];
	  //marker.bindInfoWindowHtml(html);
	  
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
    }
	function createOriginMarker(point, address) {
      var marker = new GMarker(point);
      var html = "<b>Your Location</b> <br/>" + address;
	  //marker.bindInfoWindowHtml(html);
	  
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
    }
	
	   function searchLocations() {
     var address = document.getElementById('addressInput').value;
	 //alert(address);
	 //originAddress = address;
     geocoder.getLocations(address, function(response) {
       if (!response || response.Status.code != 200) {
         alert("Sorry, address not found.");
       } else {
	   place = response.Placemark[0];
	   point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
	   originAddress = place.address;
       searchLocationsNear(point);
       }
     });
   }
   

   function searchLocationsNear(center) {
     //var radius = document.getElementById('radiusSelect').value;
     var searchUrl = '/sl/mapsxml.php?lat=' + center.lat() + '&lng=' + center.lng();
	 //alert(searchUrl);
	 originPoint = center;
	 
     GDownloadUrl(searchUrl, function(data) {
       var xml = GXml.parse(data);
	   //alert(xml);
       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 originMarker = createOriginMarker(originPoint, originAddress);
	   map.addOverlay(originMarker);
	   
       for (var i = 0; i < markers.length; i++) {
         var name = markers[i].getAttribute("name");
            var address = markers[i].getAttribute("address");
			var address2 = markers[i].getAttribute("address2");
			var city = markers[i].getAttribute("city");
			var state = markers[i].getAttribute("state");
			var zip = markers[i].getAttribute("zip");
			var tel = markers[i].getAttribute("tel");
			var distance = parseFloat(markers[i].getAttribute('distance'));
			var hours = markers[i].getAttribute("hours");
            var type = markers[i].getAttribute("type");
            var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                    parseFloat(markers[i].getAttribute("lng")));
			var markerdata = new Array(name, address, address2, city, state, zip, tel, type, hours)
            var marker = createMarker(point, markerdata);
         map.addOverlay(marker);
         var sidebarEntry = createSidebarEntry(marker, name, address, address2, city, state, zip, tel, distance, i, markers.length);
         sidebar.appendChild(sidebarEntry);
		 if(i == 0)
		 {
			var closestmarker = marker;
		 }
       
       }
	            var closestpoint = new GLatLng(parseFloat(markers[0].getAttribute("lat")),
                                    parseFloat(markers[0].getAttribute("lng")));
				
				 var bounds = new GLatLngBounds();
				//bounds.extend(closestmarker.getLatLng());
				//bounds.extend(originMarker.getLatLng());
				bounds.extend(originPoint); 
				bounds.extend(closestpoint);
       //map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	    
	   GEvent.trigger(closestmarker, 'click');
	   //GEvent.trigger(originMarker, 'click');
	   map.setZoom(map.getBoundsZoomLevel(bounds));
	   map.panTo(bounds.getCenter());
	   
		
		
	   //setTimeout("GEvent.trigger(closestmarker, 'click')", 1000);
	   
	   
     });
   }
   
   function openMarker(marker)
   {
		GEvent.trigger(marker, 'click');
   }
   
   function zoomToMarker(marker)
   {
		point = marker.getLatLng();
		//var bounds = new GLatLngBounds();
		//bounds.extend(originPoint);
		//bounds.extend(point);
		
		
		map.setZoom(7);
		map.panTo(point);
		//map.setZoom(map.getBoundsZoomLevel(bounds));
	    //map.panTo(bounds.getCenter());
		
		GEvent.trigger(marker, 'click');
   }
   
   function createSidebarEntry(marker, name, address, address2, city, state, zip, tel, distance, currentMarker, maxMarkers) {
      var div = document.createElement('div');
      var html = '<b>' + name + '</b> <br/>Distance: ' + distance.toFixed(1) + ' miles<br/>';
		html = html + city + ", " + state;
      div.innerHTML = html;
      div.style.cursor = 'pointer';
      div.style.marginBottom = '5px'; 
	  div.style.backgroundColor = "#333333";
	  //86a45c
	  div.style.fontSize = "1.2em";
	  div.style.paddingLeft = "15px";
	  div.style.paddingTop = "7px";
	  div.style.paddingBottom = "7px";
	  div.style.color = "#fff";
	  setOpacity(div, currentMarker, maxMarkers);
		
      GEvent.addDomListener(div, 'click', function() {
        //GEvent.trigger(marker, 'click');
		zoomToMarker(marker);
      });
      GEvent.addDomListener(div, 'mouseover', function() {
        div.style.backgroundColor = '#fff';
		div.style.color = "#000";
		//obj.style.opacity = op;
		//obj.style.filter = 'alpha(opacity='+ op +')';
		setRawOpacity(div, 1);
      });
      GEvent.addDomListener(div, 'mouseout', function() {
        div.style.backgroundColor = '#333333';
		div.style.color="#fff";
		setOpacity(div, currentMarker, maxMarkers);
      });
      return div;
    }
	
function setRawOpacity(obj, op)
{
	opie = Math.round(op * 100);
	obj.style.opacity = op;
	obj.style.filter = 'alpha(opacity='+ opie +')';
}
function setOpacity(obj, current, max)
{
	var op = getOpacityValue(current, max);
	opie = Math.round(op * 100);
	obj.style.opacity = op;
	obj.style.filter = 'alpha(opacity='+ opie +')';
}
function getOpacityValue(current, max)
{
	var op = ((max-current+1)/max)*1.2;
	if(op > 1)
	{
		op = 1;
	}
	if(op < 0.4)
	{
		op = 0.4;
	}
	return op;
}
	
function submitEnter(e)
{
     var key;

     if(window.event)
          key = window.event.keyCode;     //IE
     else
          key = e.which;     //firefox

     if(key == 13)
	 {
		searchLocations();
          return false;
		}
     else
          return true;
}

    //]]>
