 //<![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 pc1 = document.getElementById('postal_code1').value;
  var pc2 = document.getElementById('postal_code2').value;
  var activity_field = document.getElementById('type_masonry').checked ? "masonry" : "landscaping";
  var address = pc1+pc2;
  geocoder.getLatLng(address, function(latlng) {
    if (!latlng) {
      //alert(errNotFound);
    } else {
      searchLocationsNear(latlng, pc1, pc2, activity_field);
    }
  });
}

function searchLocationsNear(center, pc1, pc2, activity_field) {
	orig = center;
  var searchUrl = '?action=xml&lat=' + center.lat() + '&lng=' + center.lng() + '&postal_code1=' + pc1 + '&postal_code2=' + pc2 + '&activity_field=' + activity_field;
  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 retailerId = markers[i].getAttribute('distributor_id');
      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);

		var link = createDetailLink(marker);
		var targetDiv = document.getElementById('distributor_'+retailerId);
		targetDiv.appendChild(link);

      bounds.extend(point);
    }
    map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
  });
}

 function createMarker(point, name, address, address2, telephone) {

 	 var myIcon = new GIcon(G_DEFAULT_ICON);

	myIcon.image = 'im/flag.png';
	myIcon.shadow = 'im/flag_shadow.png';
	myIcon.iconSize = new GSize(40,62);
	myIcon.shadowSize = new GSize(71,62);
	myIcon.iconAnchor = new GPoint(0,62);
	myIcon.infoWindowAnchor = new GPoint(20,0);
	myIcon.printImage = 'im/flag_print.gif';
	myIcon.mozPrintImage = 'im/flag_mozPrint.gif';
	myIcon.printShadow = 'im/flag_printShadow.gif';
	myIcon.transparent = 'im/flag_transparent.png';
	myIcon.imageMap = [18,0,24,1,31,2,38,3,39,4,39,5,39,6,39,7,39,8,39,9,39,10,39,11,39,12,39,13,39,14,39,15,39,16,39,17,39,18,39,19,39,20,39,21,39,22,39,23,39,24,39,25,39,26,39,27,37,28,33,29,30,30,27,31,3,32,3,33,3,34,3,35,3,36,3,37,3,38,3,39,3,40,3,41,3,42,3,43,3,44,3,45,3,46,3,47,3,48,3,49,3,50,3,51,3,52,3,53,3,54,3,55,3,56,3,57,3,58,3,59,3,60,3,61,0,61,0,60,0,59,0,58,0,57,0,56,0,55,0,54,0,53,0,52,0,51,0,50,0,49,0,48,0,47,0,46,0,45,0,44,0,43,0,42,0,41,0,40,0,39,0,38,0,37,0,36,0,35,0,34,0,33,0,32,0,31,0,30,0,29,0,28,0,27,0,26,0,25,0,24,0,23,0,22,0,21,0,20,0,19,0,18,0,17,0,16,0,15,0,14,0,13,0,12,0,11,0,10,0,9,0,8,0,7,0,6,0,5,0,4,0,3,7,2,10,1,13,0];

 	var markerOptions = { icon:myIcon };
   var marker = new GMarker(point, markerOptions);
   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;
 }

 function createDetailLink(marker) {
   var div = document.createElement('div');
   var html = '<a href=\'#\'>Details</a>';
   div.innerHTML = html;
   div.style.cursor = 'pointer';
   GEvent.addDomListener(div, 'click', function() {
     GEvent.trigger(marker, 'click');
   });
   return div;
 }

 //]]>
