			var flameIcon = new GIcon(G_DEFAULT_ICON);
			
			var themap; 
			
			flameIcon.image = "http://www.flamingdesks.com/app/images/gmap-flame-icon.png";
			flameIcon.shadow = "http://www.flamingdesks.com/app/images/gmap-flam-icon-shadow.png";

			// Set up our GMarkerOptions object
			markerOptions = { icon:flameIcon , draggable: false};


	    function initialize() {
	      
	      $("#map_canvas").height($(window).height());
	      
	      if (GBrowserIsCompatible()) {
	      	
	      	geocoder = new GClientGeocoder();
				  if (geocoder) {
				    geocoder.getLatLng(
				      usercountry,
				      showMap
				    );
				  }	      	
	      	
	      }
	      
	      $("#searchbox form").submit(function()
	      {
	      	doSearch();
	      	return false;
	      });
	      
	      $("#findadesk").click(function()
		      {
		      	$('#findadesk').hide();
		      	$('#searchbox').slideDown();
		      	return false;
		      }
	      );
	      
	      $("#searchgo").click(doSearch);
	      
      	$('#closecompanydetails').click(function()
				{
					$('#companydetails').hide();
					return false;
				});
	      
	      $('#searchagain').click(function()
	      {
	      	$('#companydetails').slideUp('fast');
	      	$('#searchresults').slideUp('fast',function()
					      {
					      	$('#searchform').slideDown('fast');
					      });
	      });
	      
	    }
	    
	    function showMap(point)
	    {
	        map = new GMap2(document.getElementById("map_canvas"));
	        
	        if (!point)
	        {
	        	map.setCenter(new GLatLng(51, 0), 2);
	        	params = {lat: 51, lon: 0, rad: 50000, pagesize: 100};
	        }
	        else
	        {
	        	map.setCenter(point, mapzoom);
	        	params = {lat: point.y, lon: point.x, rad: 50000, pagesize: 100};
	        }
	        map.enableScrollWheelZoom();
	        map.addControl(new GLargeMapControl ());
	        
					themap = map;
				      
		      // need to get
		      $.getJSON( "search.php",params, function(json)
		      {

		      	$.each(json, function(i, n)
							{
								var point = new GLatLng(n.Latitude,n.Longitude);
								var marker = new GMarker(point, markerOptions);

								GEvent.addListener(marker, "click", function() {

										showDetails(n);
										return false;

								  });
								
								themap.addOverlay(marker);
								

							}
						);
						
		      });

	    }
	    
	    
	    function showDetails(companyrec)
	    {
				
				$('#companydetails').slideUp('fast', function()
				{

					var companypoint = new GLatLng(companyrec.Latitude,companyrec.Longitude);
					themap.panTo(companypoint);
	
					$('#companydetails h2 a').html(companyrec.CompanyName);

					if (companyrec.LogoCropped=='')
						var strdetails = '<img src="images/no-pic.gif" alt="'+companyrec.CompanyName+'"/>';
					else
						var strdetails = '<img src="'+companyrec.LogoCropped+'" alt="'+companyrec.CompanyName+'"/>';

					if ($("#inpWhere").val()!='')
						strdetails = strdetails+'<p class="distancefrom"><strong>'+companyrec.distmiles+ ' miles from "'+$("#inpWhere").val()+'"</strong></p>';

					var strdetails = strdetails+'<p class="contact"><strong>Contact</strong> '+companyrec.ContactForename+ ' '+companyrec.ContactSurname+
														(companyrec.Telephone!=''?'<br/>'+companyrec.Telephone:'')+
														'</p>'+
														'<p class="contact"><strong>Address</strong> '+companyrec.fulladdress+'</p>'+
														'<p class="contact"><strong>Description</strong> '+companyrec.Description+'</p>';
					
					$('#companydetails .wrapper').html(strdetails);

					$('#companydetails').slideDown('fast');
				
				});
				

	    }
	    
	    
	    function doSearch()
      {
      	
	      var geocoder = new GClientGeocoder();
				geocoder.getLatLng(
				  $("#inpWhere").val(),
				  function(point) {
				    if (!point) {
				      $("#searcherror").html('<p class="error">"' + $("#inpWhere").val() + '" not found</p>');
				    } else {
				    	$("#searcherror").html('');
				      
				      params = {lat: point.y, lon: point.x, cat: $('#inpCompanyType').val()};
				      
				      // need to get
				      $.getJSON( "search.php",params, function(json)
				      {
				      	themap.clearOverlays();
				      	$('#searchresults ul').empty();
				      	
				      	var strresultsdesc = 'Results for '+
				      			($('#inpCompanyType').val()>0?' "<strong>'+$('#inpCompanyType').get(0).options[$('#inpCompanyType').get(0).selectedIndex].text+'</strong>" in ':'')+
				      			'"<strong>'+$("#inpWhere").val()+'</strong>"';
				      	
				      	$('#searchresults h3').html(strresultsdesc);
				      	
				      	$.each(json, function(i, n)
									{
										var point = new GLatLng(n.Latitude,n.Longitude);
										var marker = new GMarker(point, markerOptions);
		
										GEvent.addListener(marker, "click", function() {

												showDetails(n);
												return false;

										  });
										
										themap.addOverlay(marker);
										
										// add the result to the results list
										$('<li><a href="#">'+ n.CompanyName +'</a><span class="details">' + n.fulladdress + ' (<strong>' + n.distmiles + ' miles</strong>)</span></li>').appendTo('#searchresults ul').click(function()
											{
												showDetails(n);
												return false;
											}
										);
									}		
								);
								
								$('#searchform').slideUp('fast',function()
					      {
					      	$('#searchresults').slideDown('fast');
					      });
								
				      });
				      
				      
				      
				      themap.setZoom(13)
				      themap.panTo(point);
				    }
				  }
				);
				
      	return false;
      	
      }