    //<![CDATA[
    if (GBrowserIsCompatible())
    {		
			var curPos = {point:0};
			
			var icon_9 = new GIcon();
			icon_9.image = 'images/icon_gmap_9.png';
			icon_9.shadow = 'images/icon_gmap_shadow.png';
			icon_9.iconSize = new GSize(22, 37);
			icon_9.shadowSize = new GSize(47, 36);
			icon_9.iconAnchor = new GPoint(2, 36);
			icon_9.infoWindowAnchor = new GPoint(5, 1);

			var icon_18 = new GIcon();
			icon_18.image = 'images/icon_gmap_18.png';
			icon_18.shadow = 'images/icon_gmap_shadow.png';
			icon_18.iconSize = new GSize(22, 37);
			icon_18.shadowSize = new GSize(47, 37);
			icon_18.iconAnchor = new GPoint(2, 36);
			icon_18.infoWindowAnchor = new GPoint(5, 1);
			
			var redicon = new GIcon();
			redicon.image = 'images/icon_gmap_redx.png';
			redicon.iconSize = new GSize(7, 7);
			redicon.iconAnchor = new GPoint(4, 4);
			redicon.infoWindowAnchor = new GPoint(5, 1);

		 	function getObjId(id) {
				return document.getElementById(id);
	    }		

		 	function getObjName(name) {
				return document.getElementsByName(name)[0];
	    }	

			function getKeyCode(e, curPos) {
    		var intKey = (window.Event) ? e.which : e.keyCode;
    		if (intKey == 13) { //enter key
        	GDownloadUrl('browse_zipll.php?zip='+getObjId('zip').value, prepPoints);
    		}
 			}

			prepPoints = function(zipll)
			{
   			var latlon = /\(([-.\d]*), ([-.\d]*)/.exec( zipll );
   			var lat = parseFloat( latlon[1] );
 				var lon = parseFloat( latlon[2] );
   			point = new GLatLng(lat,lon);
   			curPos.point = point;
   			prepVars(point, '', 9, curPos, 0);
			}

			function serialize (a)
			{
    		var a_srz = "";
    		var total = 0;
    		for (var key in a)
    		{
        	++ total;
        	a_srz = a_srz + "s:" +
                String(key).length + ":\"" + String(key) + "\";s:" +
                String(a[key]).length + ":\"" + String(a[key]) + "\";";
    		}
    		a_srz = "a:" + total + ":{" + a_srz + "}";
    		return a_srz;
			}

			function prepVars(point, zip, zoom, curPos, filter)
			{			
				if(filter == 1) {point = curPos.point; }
				
				var ctype = [];
				var counter = 0;
				var discounts = 0;
				var carts = 0;
				var drange = 0;
				var photos = 0;
				if(getObjName('ctype1').checked) { ctype[counter] = 1; ++counter;}
				if(getObjName('ctype2').checked) { ctype[counter] = 2; ++counter;}
				if(getObjName('ctype3').checked) { ctype[counter] = 3; ++counter;}
				if(getObjName('ctype4').checked) { ctype[counter] = 4; ++counter;}
				if(getObjName('ctype5').checked) { ctype[counter] = 5;}
				
			
				if(getObjName('discounts').checked) { discounts = 1; }
				if(getObjName('carts').checked) { carts = 1; }
				if(getObjName('drange').checked) { drange = 1; }
				if(getObjName('photos').checked) { photos = 1; }
				
				var ser_ctype = serialize(ctype);
				showCourses(point, zip, zoom, getObjName('holes').value, getObjName('length').value, getObjName('num_reviews').value, getObjName('score_min').value, getObjName('score_max').value, getObjName('wd9_min').value, getObjName('wd9_max').value, getObjName('wd18_min').value, getObjName('wd18_max').value, getObjName('we9_min').value, getObjName('we9_max').value, getObjName('we18_min').value, getObjName('we18_max').value, ser_ctype, discounts, carts, drange, photos, curPos, filter);
			}

      // A function to create the marker and set up the event window
      function createMarker(point,html) {
        var spstr = html.split('||');
        holes = parseInt(spstr[2]);
        spstr = '<div id="gmap_text"><a href="http://www.roughreport.com/course.php?id='+spstr[0]+'" target="_blank">'+spstr[1]+'</a>'+spstr[3]+'</div>';
        
        switch(holes)
        {
        	case 9:
        		var marker = new GMarker(point, icon_9);
        		break;
        	
        	case 18:
        		var marker = new GMarker(point, icon_18);
        		break;        		
      	}
        
        GEvent.addListener(marker, 'click', function() {
          marker.openInfoWindowHtml(spstr);
        });

        return marker;
      }

			function showCourses(point, zip, zoom, holes, length, num_reviews, score_min, score_max, wd9_min, wd9_max, wd18_min, wd_18max, we9_min, we9_max, we18_min, we18_max, ctype, discounts, carts, drange, photos, curPos, filter) {
      	if (point) {
      		map.clearOverlays();
      		var request = GXmlHttp.create();
      							
					if(zoom > 0)
					{
      			map.setZoom(zoom);
      		}
      		if(filter < 1)
      		{
      			map.panTo(point);
      		}
          var marker = new GMarker(point, redicon);
          map.addOverlay(marker);
      		var latlon = /\(([-.\d]*), ([-.\d]*)/.exec( point );
      		if ( latlon )
      		{ 
       			var lat = parseFloat( latlon[1] );
       			var lon = parseFloat( latlon[2] );
						lat = lat.toFixed(6);
						lon = lon.toFixed(6);
					}
					curPos.point = point;
					curzoom = map.getZoom();
								
      		request.open('GET', 'browse_xml.php?lat='+lat+'&lon='+lon+'&zip='+zip+'&holes='+holes+'&length='+length+'&num_reviews='+num_reviews+'&score_min='+score_min+'&score_max='+score_max+'&wd9_min='+wd9_min+'&wd9_max='+wd9_max+'&wd18_min='+wd18_min+'&we9_min='+we9_min+'&we9_max='+we9_max+'&we19_min='+we18_min+'&we18_max='+we18_max+'&ctype='+ctype+'&discounts='+discounts+'&carts='+carts+'&drange='+drange+'&photos='+photos+'&zoom='+curzoom, true);
      		request.onreadystatechange = function() {

        	if (request.readyState == 4)
        	{
          	var xmlDoc = GXml.parse(request.responseText);
          	
          	// obtain the array of markers and loop through it
          	var markers = xmlDoc.documentElement.getElementsByTagName('marker');
          	for (var i = 0; i < markers.length; i++)
          	{
            	// obtain the attribues of each marker
            	var lat = parseFloat(markers[i].getAttribute('lat'));
            	var lon = parseFloat(markers[i].getAttribute('lon'));
            	var point = new GLatLng(lat,lon);
            	var html = markers[i].getAttribute('html');
            	// create the marker
            	var marker = createMarker(point,html);
            	map.addOverlay(marker);
          	}
        	}
      		}
      	}
      	request.send(null);
      }

      var map = new GMap2(document.getElementById('map'));
      map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
      var otherOpts = { 
        buttonStartingStyle: {background: '#FFF', paddingTop: '4px', paddingLeft: '4px', border:'1px solid black'},
        buttonHTML: '<img title="Drag Zoom In" src="images/zoomin.gif">',
        buttonStyle: {width:'25px', height:'23px'},
        buttonZoomingHTML: 'Drag a region on the map (click here to reset)',
        buttonZoomingStyle: {background:'yellow',width:'75px', height:'100%'},
        backButtonHTML: '<img title="Zoom Back Out" src="images/zoomout.gif">',  
        backButtonStyle: {display:'none',marginTop:'5px',width:'25px', height:'23px'},
        backButtonEnabled: true, 
        overlayRemoveTime: 1500} 

      map.addControl(new DragZoomControl({}, otherOpts, {}), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(19,285)));
				
      map.setCenter(new GLatLng(41.6401, -97.8223), 4);
			
			var counter = 0;
			GEvent.addListener(map, 'click', function(overlay, point) {
				if(point != undefined)
				{
					if(counter == 0)
					{
				  	prepVars(point, '', 9, curPos, 0);
					}
					else
					{
						prepVars(point, '', 0, curPos, 0);
					}
				}
				counter = 1;
      });
    }
    else 
    {
      alert('Sorry, the Google Maps API is not compatible with this browser');
    }
    //]]>
