 //<![CDATA[
 var map;
 var geocoder;
 var errNotFound;
 var getDir;
 var orig;
 var l;

 function load(lang, notFoundMsg, getDirMsg) {
   if (GBrowserIsCompatible()) {
     geocoder = new GClientGeocoder();
     map = new GMap2(document.getElementById('map'));
     map.addControl(new GSmallMapControl());
     map.addControl(new GMapTypeControl());
     map.setCenter(new GLatLng(62, -100), 3);
     errNotFound = notFoundMsg;
     getDir = getDirMsg;
     l = lang;
   }
 }

function searchLocations() {
  var address = document.getElementById('addressInput').value;
  geocoder.getLatLng(address, function(latlng) {
    if (!latlng) {
      alert('errNotFound');
    } else {
      searchLocationsNear(latlng);
    }
  });
}

function searchLocationsNear(center) {
	orig = center;
  var searchUrl = 'store-locator-XML/lat=' + center.lat() + '&lng=' + center.lng();
  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 = '{{tr t="store_loc_no_result"}}';
//         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 address2 = markers[i].getAttribute('address2');
      var telephone = markers[i].getAttribute('telephone');
      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, address2, telephone);
      map.addOverlay(marker);
//         var sidebarEntry = createSidebarEntry(marker, name, address, distance);
//         sidebar.appendChild(sidebarEntry);
      bounds.extend(point);
    }
    map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
  });
}

 function createMarker(point, name, address, address2, telephone) {
   var marker = new GMarker(point);
   var html = '<b>' + name + '</b> <br/>' + address + '<br/>' + address2 + '<br/>' + telephone;
   html = html + '<br /><a href="http://maps.google.com/maps?saddr=' + orig.toUrlValue() + '&daddr=' + escape(name) + '@' + point.toUrlValue() + '&hl=' + l + '" target="_blank">' + getDir + '</a>';
   GEvent.addListener(marker, 'click', function() {
     marker.openInfoWindowHtml(html);
   });
   return marker;
 }

 function createSidebarEntry(marker, name, address, distance) {
   var div = document.createElement('div');
   var html = '<b>' + name + '</b> (' + distance.toFixed(1) + ')<br/>' + address;
   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;
 }
 //]]>
