    // Our global state
    var gLocalSearch;
    var gMap;
    var gSelectedResults = [];
    var gCurrentResults = [];
    var gSearchForm;
	var gSearchButton = 0;
	var gSearchInitialized = 0;
	var cat = "";
	var markerClick = 0;
		 
    // Create our "tiny" marker icon
    var gSmallIcon = new GIcon();
    gSmallIcon.image = "http://labs.google.com/ridefinder/images/mm_20_yellow.png";
    gSmallIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
    gSmallIcon.iconSize = new GSize(12, 20);
    gSmallIcon.shadowSize = new GSize(22, 20);
    gSmallIcon.iconAnchor = new GPoint(6, 20);
    gSmallIcon.infoWindowAnchor = new GPoint(5, 1);

	// Create a base icon for all of our markers that specifies the
	// shadow, icon dimensions, etc.
	var baseIcon = new GIcon(G_DEFAULT_ICON);
	baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
	baseIcon.iconSize = new GSize(20, 34);
	baseIcon.shadowSize = new GSize(37, 34);
	baseIcon.iconAnchor = new GPoint(9, 34);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);
 
    // Set up the map and the local searcher.
    function OnLoad( vCat, startLng, startLat, startZoom ) 
    {
    	cat = vCat
		// Initialize the map
		gMap = new GMap(document.getElementById("map"));
		gMap.addControl(new GSmallMapControl());
		gMap.addControl(new GMapTypeControl());
		gMap.setCenter(new GLatLng( startLat, startLng ), startZoom);
				      
       	// Adsense Adverts
	 	var publisher_id = 'pub-8474009545307657';
		var adsManagerOptions = {
			maxAdsOnMap : 1,
			style: 'adunit'
		};
		
		adsManager = new GAdsManager( gMap, publisher_id, adsManagerOptions );
		adsManager.enable();
		
		doSearch( "5-a-side" );
    }

	function LatLon(lat, lon) {
		this.lat = lat;
		this.lon = lon;
	}
 
 	getMidPoint = function(p1, p2) 
 	{
		var dLon = p2.lon + p1.lon;
		var dLat = p2.lat + p1.lat;
		
		return new LatLon( dLat/2, dLon/2 );
	}
 
    function doSearch() 
    {
		// Display Search Results
		var bounds = gMap.getBounds();
		var southWest = bounds.getSouthWest();
		var northEast = bounds.getNorthEast();
		var lngSpan = northEast.lng() - southWest.lng();
		var latSpan = northEast.lat() - southWest.lat();
		var urlConn = GetXmlHttpObject();
		
		var NE = new LatLon( northEast.lat(), northEast.lng() );
		var SW = new LatLon( southWest.lat(), southWest.lng() );		
		var midPoint = getMidPoint( NE, SW );
		
		var url="http://www.voteforbest.com/get_data.php?c=" + cat + "&lat=" + parseFloat(midPoint.lat) + "&lng=" + parseFloat(midPoint.lon) + "&zoom=" + gMap.getZoom() + "&dist=" + northEast.lng() + ":" + northEast.lat() + ":" + southWest.lng() + ":" + southWest.lat();
		var results = "";
		
		urlConn.onreadystatechange=function() 
		{
			if( urlConn.readyState==4 || urlConn.readyState=="complete" )
			{
				results = urlConn.responseText;
				resultset = results.split( "<html>" );
				document.getElementById("searchwell").innerHTML =  "<table class=\"chart\">" + resultset[1] + "</table>";
		
				var arrRecords = resultset[0].split( "<record>" );
				for( var i=0; i<arrRecords.length; i++ )
				{
					if( arrRecords[i].length > 0 )
					{
						var record = arrRecords[i].split( "<entity>" );
						var formattedAddress = record[3].replace( /,/g, ",<br>" );						
						//document.getElementById("searchwell").innerHTML +=  "<b>" + record[1] + ". " + record[2] + "</b><br>" + formattedAddress + "<br>";

						var point = new GLatLng( parseFloat(record[5]), parseFloat(record[4]) );
						gMap.addOverlay( createMarker( point, parseInt(record[1]), "<b>"+record[2]+"</b><br>"+formattedAddress ) );
					}
				}
			} 
		};
		urlConn.open( "GET", url, true);
		urlConn.send( null );
		
		if( gSearchInitialized == 0 ) {
			GEvent.addListener( gMap, "moveend", function() {
				if( markerClick== 0 )
				{
				  	gMap.clearOverlays();
				  	document.getElementById("searchwell").innerHTML = "";
				  	doSearch();
				}
			  	markerClick=0;
			});
			gSearchInitialized = 1;
		}
	}

	function createMarker(point, index, info) {
	  // Create a lettered icon for this point using our icon class
	  var letter = String.fromCharCode("A".charCodeAt(0) + index);
	  var letteredIcon = new GIcon(baseIcon);
	  letteredIcon.image = "http://www.google.com/mapfiles/marker.png";
			
	  // Set up our GMarkerOptions object
	  markerOptions = { icon:letteredIcon };
	  var marker = new GMarker(point, markerOptions);
	
	  GEvent.addListener(marker, "click", function() { markerClick=1; marker.openInfoWindowHtml( info ); });
	  return marker;
	} 
	
	function GetXmlHttpObject()
	{ 
		var objXMLHttp=null
		if (window.XMLHttpRequest)
		{
			objXMLHttp=new XMLHttpRequest()
		}
		else if (window.ActiveXObject)
		{
			objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
		}
		return objXMLHttp
	} 

