
    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 google.maps.LatLng(54.285751, -4.042969), 2);
      }
    }

   function searchLocations() {
     var address = document.getElementById('addressInput').value;
     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 = 'store-xml.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 = '<div class="sf_wrap"><p class="sf_noresult">No results found.</p></div>';
        map.setCenter(new google.maps.LatLng(54.285751, -4.042969), 2);
         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 telephone = markers[i].getAttribute('telephone');
		 var fax = markers[i].getAttribute('fax');
		 var monday = markers[i].getAttribute('monday');
		 var tuesday = markers[i].getAttribute('tuesday');
		 var wednesday = markers[i].getAttribute('wednesday');
		 var thursday = markers[i].getAttribute('thursday');
		 var friday = markers[i].getAttribute('friday');
		 var saturday = markers[i].getAttribute('saturday');
		 var sunday = markers[i].getAttribute('sunday');
         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, telephone, fax, address, monday, tuesday, wednesday, thursday, friday, saturday, sunday);
         map.addOverlay(marker);
         var sidebarEntry = createSidebarEntry(marker, name, address, telephone, fax, distance);
         sidebar.appendChild(sidebarEntry);
         bounds.extend(point);
       }
       map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
     });
   }

    function createMarker(point, name, telephone, fax, address, monday, tuesday, wednesday, thursday, friday, saturday, sunday) {
      var icon = new GIcon(G_DEFAULT_ICON);
	  icon.image = "/media/images/sf_wallwik.png";
	  icon.iconSize = new GSize(30, 28);
  	  icon.shadow = "";
	  markerOptions = { icon:icon };
	  
	  var marker = new GMarker(point, markerOptions);
	  var newfax = fax != '' ? '<p class="sfm_fax"><strong>Fax:</strong>' + fax + '</p>' : "";
	  var newtelephone = telephone != '' ? '<p class="sfm_telephone"><strong>Telephone:</strong>' + telephone + '</p>' : "";
	  var openingtimess = monday != '' || tuesday != '' || wednesday != '' || thursday != '' || friday != '' || saturday != '' || sunday != '' ? '<p class="sfm_open">Opening Times</p><p class="sfm_day">' : '';
	  var openingtimese = monday != '' || tuesday != '' || wednesday != '' || thursday != '' || friday != '' || saturday != '' || sunday != '' ? '</p>' : '';
	  var newmonday = monday != '' ? '<strong>Monday</strong>' + monday + '<br />' : "";
	  var newtuesday = tuesday != '' ? '<strong>Tuesday</strong>' + tuesday + '<br />' : "";
	  var newwednesday = wednesday != '' ? '<strong>Wednesday</strong>' + wednesday + '<br />' : "";
	  var newthursday = thursday != '' ? '<strong>Thursday</strong>' + thursday + '<br />' : "";
	  var newfriday = friday != '' ? '<strong>Friday</strong>' + friday + '<br />' : "";
	  var newsaturday = saturday != '' ? '<strong>Saturday</strong>' + saturday + '<br />' : "";
	  var newsunday = sunday != '' ? '<strong>Sunday</strong>' + sunday : "";
	  
      var html = '<p class="sfm_name">' + name + '</p><p class="sfm_address">' + address + '</p>' + newtelephone + newfax + openingtimess + newmonday + newtuesday + newwednesday + newthursday + newfriday + newsaturday + newsunday + openingtimese;
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
    }

    function createSidebarEntry(marker, name, address, telephone, fax, distance) {
      var div = document.createElement('div');
	  var newfax = fax != '' ? '<p class="sf_fax"><strong>Fax:</strong>' + fax + '</p>' : "";
	  var newtelephone = telephone != '' ? '<p class="sf_telephone"><strong>Telephone:</strong>' + telephone + '</p>' : "";
      var html = '<div class="sf_wrap"><p class="sf_name">' + name + '</p><p class="sf_address">' + address + '</p>' + newtelephone + newfax + '<p class="sf_distance"><strong>Distance:</strong> ' + distance.toFixed(1) + ' miles</p><p class="sf_link">[ <a href="#" onclick="displayMarker(makerId)">Show Store Details</a> ]</div>';
      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;
    }
