    var map;
    var geocoder;
    var localSearch = new GlocalSearch();

    function load() {
      if (GBrowserIsCompatible()) {
        geocoder = new GClientGeocoder();
        map = new GMap2(document.getElementById('map'));
        map.addControl(new GMapTypeControl());

        map.addControl(new GLargeMapControl());
		map.addControl(new GOverviewMapControl());
		map.enableDoubleClickZoom();
        map.setCenter(new GLatLng(51.999446324479706, -0.22720108032226562), 7);
        
         // custom icon
        var blueIcon = new GIcon(G_DEFAULT_ICON);
        blueIcon.image = document.getElementById('baseURL').value+"_img/pin.png";
		
		// Set up our GMarkerOptions object
		markerOptions = { icon:blueIcon };

      }
    }
    
    function dataSet() {
    	$(function(){
			var sidebar = document.getElementById('search_results');
			sidebar.innerHTML = '';
			var bounds = new GLatLngBounds();
			$('#dataSetDiv div').each(function(i){
				localSearch.setSearchCompleteCallback(null, 
				function() {
					if (localSearch.results[0])
					{		
						if (typeof console != 'undefined')
							console.log(localSearch.results);
						var resultLat = localSearch.results[0].lat;
						var resultLng = localSearch.results[0].lng;
						var point = new GLatLng(resultLat,resultLng);
						var postcode = localSearch.results[0].postalCode;
						if (postcode=='') postcode = localSearch.results[0].streetAddress.split(' ').slice(-2).join(' ');
						$('#dataSetDiv div .postcode:contains('+postcode+')').data('point',point);
						
						name = 'not found';
						name = $('#dataSetDiv div .postcode:contains('+postcode+')').parent().find('.name').text();
						
						var marker = createDataMarker(postcode,point,name);
						map.addOverlay(marker);
						
						var sidebarEntry = createDataSidebarEntry(marker,postcode,point,name);
						 sidebar.appendChild(sidebarEntry);
						 bounds.extend(point);
						
						map.setCenter(point, map.getBoundsZoomLevel(bounds));
						
					}else{
						if (typeof console != 'undefined')
							console.warn("Address not found!");
						var sidebarEntry = createDataSidebarEntry(false,'','','Not Found');
						 sidebar.appendChild(sidebarEntry);
						 bounds.extend(point);
					}
				});
				address = $('.postcode', this).text();
				localSearch.execute(address + ", Europe");
			});
		});
    }
    
    function createDataMarker(searchValue,point,name) {
      //var marker = new GMarker(point);
      var marker = (new GMarker(point, markerOptions)); // custom icon

    
      var html = '<div id="marker">';

      html += '<div class="right"><h2><strong>' + name + '</strong></h2><br />';
      html += '</div>';
      
      html += '</div>';
      
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
    }
    
    function createDataSidebarEntry(marker,searchValue,point,name,address,hometelno,id,website,qty,agegroups,contactname,distance,clubmark) {
      
      var div = document.createElement('div');
            
      resultContents = '<div class="search_results_item_hold">';
      resultContents += '<div class="search_results_item_head">';
	  resultContents += '<div class="search_results_item_head_description"><p><span>' + name + '</span></p></div>';
      resultContents += '</div><div class="clear"></div>';
      resultContents += '</div><div class="clear"></div>';
      
      div.innerHTML = resultContents;
      
      GEvent.addDomListener(div, 'click', function() {
        GEvent.trigger(marker, 'click');
      });
      GEvent.addDomListener(div, 'mouseover', function() {
        div.style.backgroundColor = '#d2dee3';
      });
      GEvent.addDomListener(div, 'mouseout', function() {
        div.style.backgroundColor = '#fff';
      });
      
      return div;
    }



function searchLocations(address,qty) {

	var restaurant = "0";
	
	localSearch.setSearchCompleteCallback(null, 
		function() {
			
			if (localSearch.results[0])
			{		
				var resultLat = localSearch.results[0].lat;
				var resultLng = localSearch.results[0].lng;
				var point = new GLatLng(resultLat,resultLng);
				searchLocationsNear(point,restaurant,address,qty);
				//alert("point: " + point + ", address: " + address + ", Latitude: " + point.lat() + "\nLongitude: " + point.lng() + ", qty: " + qty);
			}else{
				alert("Address not found!");
			}
		});	

	//localSearch.execute(address + ", UK");
	
	// manual fudges
	if(address == 'barrow') { address = 'LA14 1XP'; }
	
	localSearch.execute(address + ", Europe");
	
}

  
   function searchLocationsRestaurant() {
     var address = "uk";
     var restaurant = document.getElementById('restaurant').value;
     geocoder.getLatLng(address, function(latlng) {
       if (!latlng) {
         alert(address + ' not found');
       } else {
         searchLocationsNear(latlng,restaurant);
       }
     });
   }
   


   function searchLocationsNear(center,restaurant,searchValue,qty) {
     var address = document.getElementById('address').value;
     var qty = document.getElementById('qty').value;
     var agegroups = document.getElementById('agegroup').value;
     var restaurant = restaurant;
     var searchUrl = document.getElementById('baseURL').value+'_googlemaps/phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&restaurant=' + restaurant + '&qty=' + qty + '&agegroup=' + agegroups;
     //alert(searchUrl);
     GDownloadUrl(searchUrl, function(data) {
       var xml = GXml.parse(data);
       var markers = xml.documentElement.getElementsByTagName('marker');
       map.clearOverlays();

       var sidebar = document.getElementById('search_results');
       sidebar.innerHTML = '';
       if (markers.length == 0) {
         sidebar.innerHTML = 'No results found.';
         map.setCenter(new GLatLng(51.999446324479706, -0.22720108032226562), 7);
         return;
       }

       var bounds = new GLatLngBounds();
       for (var i = 0; i < markers.length; i++) {
         var name = markers[i].getAttribute('name');
         var hometelno = markers[i].getAttribute('hometelno');
         var id = markers[i].getAttribute('id');
         var address = markers[i].getAttribute('address');
         var website = markers[i].getAttribute('website');
         var contactname = markers[i].getAttribute('contact');
         var clubmark = markers[i].getAttribute('clubmark');
         var agegroups = markers[i].getAttribute('agegroups');
         var distance = parseFloat(markers[i].getAttribute('distance'));
         var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                                 parseFloat(markers[i].getAttribute('lng')));
         
        var marker = createMarker(searchValue,point,name,address,hometelno,id,website,qty,agegroups,contactname,clubmark);
        map.addOverlay(marker);

         var sidebarEntry = createSidebarEntry(marker,searchValue,point,name,address,hometelno,id,website,qty,agegroups,contactname,distance,clubmark);
         sidebar.appendChild(sidebarEntry);
         bounds.extend(point);
       }
       map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
     });
   }
   
   
   
   
   
    function createMarker(searchValue,point,name,address,hometelno,id,website,qty,agegroups,contactname,clubmark) {
      //var marker = new GMarker(point);
      var marker = (new GMarker(point, markerOptions)); // custom icon

    
      var html = '<div id="marker">';

      html += '<div class="right"><h2><strong>' + name + '</strong></h2><br />';
      html += '<b>Contact Name:</b> ' + contactname + '<br />';
      html += '<b>Contact number:</b> ' + hometelno + '<br />';
      html += '<b>Address:</b> ' + address + '<br />';
      html += '<b>Age Groups:</b> ' + agegroups + '<br />';
      html += '<b>Web site:</b> <a href="http://'+ website +'" target="_blank">'+ website +'</a><br /><br />';
	  if(clubmark == 'gold') {
	  	html += '<div class="left"><img src="_img/club_mark_goldlg.gif" width="131" height="65" alt="Club Mark Gold" /></div>';
	  }
	  if(clubmark == 'standard') {
	  	html += '<div class="left"><img src="_img/club_mark_silverlg.gif" width="131" height="65" alt="Club Mark" /></div>';
	  }
	  
	  // directions
	  html += '<p><b>Get directions</b></p>';
	  html += '<form name="test" method="get" action="http://maps.google.com/maps">';
			html += "<input name=\"saddr\" id=\"saddr\" type=\"text\" value=\"your address\" onfocus=\"getElementById('saddr').value=''\" />";
			html += '<input name="daddr" type="hidden" value="' + address + '" />';
			html += '<input name="submit" type="submit" value="Go" />';
	  html += '</form>';
	  
	  
      //if(restaurantWebsite !== '') {
      //	html += 'Web Site: <a href="http://' + restaurantWebsite + '" target="new">Visit Web Site</a><br />';
      //}
      //html += 'Nearest tube: ' + tube + '</p>';
      
      

      //<a href="http://maps.google.com/maps?saddr=Your address here&daddr=' + address + '">Directions</a><br />
      html += '</div>';
      
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
    }



    

    
    
    function createSidebarEntry(marker,searchValue,point,name,address,hometelno,id,website,qty,agegroups,contactname,distance,clubmark) {
      
      var div = document.createElement('div');
            
      resultContents = '<div class="search_results_item_hold">';
      resultContents += '<div class="search_results_item_head">';
      //resultContents += '<div class="search_results_item_head_pin"><img src="_img/pin.gif" alt="A" /></div>';
	  if(distance > 0) {
	  	resultContents += '<div class="search_results_item_head_description"><p><span>' + name + '</span> ' + distance.toFixed(1) + ' Miles </p></div>';
      } else {
      	resultContents += '<div class="search_results_item_head_description"><p><span>' + name + '</span></p></div>';
      }
      resultContents += '</div><div class="clear"></div>';
      resultContents += '<div class="search_results_item_body_description">';
      resultContents += '<p><span>Address:</span> ' + address + '</p>';
      resultContents += '</div>';
      if(clubmark == 'gold') {
      	resultContents += '<div class="search_results_item_body_pic"><img src="_img/club_mark_gold.gif" width="68" height="34" alt="Club Mark Gold" /></div>';
      }
      if(clubmark == 'standard') {
      	resultContents += '<div class="search_results_item_body_pic"><img src="_img/club_mark_silver.gif" width="68" height="34" alt="Club Mark" /></div>';
      }
      resultContents += '</div><div class="clear"></div>';
      
      div.innerHTML = resultContents;
      
      GEvent.addDomListener(div, 'click', function() {
        GEvent.trigger(marker, 'click');
      });
      GEvent.addDomListener(div, 'mouseover', function() {
        div.style.backgroundColor = '#d2dee3';
      });
      GEvent.addDomListener(div, 'mouseout', function() {
        div.style.backgroundColor = '#fff';
      });
      
      return div;
    }
