   
    var geocoder = new GClientGeocoder();
	var markers, uLatRad, uLonRad, drag=false, maxCasinoDist=0, userGeo;
	var currentPage = 1, perPage=25, isCasinoName=false;


	function extractAddress(response)
    {
		isCasinoName = false;
        if (!response || response.Status.code != G_GEO_SUCCESS)
        {
            document.getElementById("loc_display").innerHTML = "Perhaps this is a casino name, searching";
			var didDrag = false;
			isCasinoName = true; // force search to look by casino name
			doSearch(1, didDrag);
        }
        else
        {
            place = response.Placemark[0];
            uLatRad = place.Point.coordinates[1]/(180/3.14159);
            uLonRad = place.Point.coordinates[0]/(180/3.14159);
            var cookieVal = place.address;
            if (cookieVal.indexOf(", USA") != -1)
            {
                cookieVal = cookieVal.substring(0, cookieVal.indexOf(", USA"));
            }
            userGeo = cookieVal;
            cookieVal += ";" + uLatRad + ";" + uLonRad;
            setCookie("pm_where", cookieVal, 20000);
            var postalCode = "";
            document.getElementById("loc_display").innerHTML = userGeo;

			var didDrag = false;
			doSearch(1, didDrag);
        }
    }


    function doGeo(element, callback)
    {
        if (element.value.length >= 4)
        {
            document.getElementById("loc_display").innerHTML = "<div class='busy'>Geocoding ...<\/div>";

            geocoder.getLocations(element.value, callback);
        }
		else
		{
            document.getElementById("loc_display").innerHTML = "<div class='busy'>Enter > 4 characters<\/div>";
		}
    }


	function addCasino(i, casino, url, directions)
	{
		var c = "<tr style='padding-bottom:2px;'><td class='casino_number'>"+i+".<\/td><td class='casino_dist'><a href='"+directions+"' class='casino_dist' target='Directions' title='Driving Directions'>";
		if (isCasinoName)
		{
			c += "road trip";
		}
		else
		{
			c += casino.dist + " mi";
		}
		c += "</a></td><td class='casino_name'><a href='"+url+"' style='font-size:10px;' target='Poker Mashup' title='Casino Website'>"+casino.name+"</a></td></tr>";
		return c;
	}


	function showCircles(dist)
	{
		var r2d = 180/Math.PI;
		var increment;
        if (dist > 1000)
        {
        	increment = 200;
        }
        else if (dist < 11)
        {
            increment = 2;
        }
        else if (dist < 101)
        {
            increment = 20;
        }
        else if (dist < 201)
        {
            increment = 40;
        }
        else if (dist < 301)
        {
            increment = 50;
        }
        else if (dist < 401)
        {
            increment = 100;
        }
        else if (dist < 501)
        {
            increment = 100;
        }
        else if (dist < 1001)
        {
            increment = 150
        }
        else
        {
            increment = 1;
        }

        for (var i = 0; i <= 6; i++)
        {
            drawCircle2(uLatRad*r2d, uLonRad*r2d, increment * i, 1);
        }
	}

	function parseData(data, responseCode)
	{
		if ((data == null) || (responseCode == -1) || (responseCode != 200))
		{
			document.getElementById('loc_display').innerHTML = "<div class='busy'>Oops error ... try search again<\/div>";
			return;
		}

		map.clearOverlays();
		markers = new Array();
		var casinoData = data.split('|');
		var newData = "<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
		var casinoCount = casinoData[0];
		var results;
		document.getElementById('loc_display').innerHTML = "<div class='busy'><\/div>";
		var index=0, color;
		maxCasinoDist = 0;
		var numPages = Math.ceil(casinoCount/perPage);
		var casinoList = "<table border='0' cellpadding='0' cellspacing='0'><tr><td colspan='3' class='pager'>"+casinoCount+"&nbsp;total&nbsp;&nbsp;&nbsp;";
		if (numPages > 1)
		{
			casinoList += "&nbsp;page&nbsp;";
			for (i = 1; i < numPages+1; i++)
			{
				if (currentPage == i)
				{
					casinoList+=i+"&nbsp;";
				}
				else
				{
					casinoList += "<a href='javascript:void(0)' onclick='javascript:doSearch("+i+", false,"+isCasinoName+")'>"+i+"<\/a>&nbsp;";
				}
			}
			casinoList+="<\/td><\/tr>";
		}
		document.getElementById("loc_display").innerHTML = "pgs: " + numPages + " cc: " + casinoCount + " cdl: " + casinoData.length-1;
		for (i = 1; i < casinoData.length-1; i++)
		{
			var casino = new Object();
			var fields = casinoData[i].split('\t');
			index=0;
			casino.id = fields[index++];
			casino.dist = fields[index++];
			casino.lat = fields[index++];
			casino.lon = fields[index++];
			casino.name = fields[index++];
			casino.line1 = fields[index++];
			casino.city = fields[index++];
			casino.state = fields[index++];
			casino.zip = fields[index++];
			casino.phone = fields[index++];
			casino.url = fields[index++];
		
			if (casino.dist > maxCasinoDist)
			{
				maxCasinoDist = casino.dist;
			}

			var address = casino.line1.replace(/\s/g, "+");
			var city = casino.city.replace(/\s/g, "+");
			var state = casino.state.replace(/\s/g, "+");
			var url='';
			if (casino.url.length > 0)
			{
				//url = "/website/"+casino.id+"/url="+casino.url;
				url = casino.url;
			}
			else
			{
				var cname = casino.name.replace(/\s/g,"+");
				cname = cname.replace(/'/g,"");
				url = "http://www.google.com/search?"+"ht=en&q="+cname+"&btnI=1";
			}
			//var directions="/directions/"+casino.id+"/url=http://maps.google.com?q="+address+"+"+city+"+"+state+"+"+casino.zip;
			var directions="http://maps.google.com?q="+address+"+"+city+"+"+state+"+"+casino.zip;
			casinoList += addCasino(i, casino, url, directions);
           	var markerHtml = "<div align='left' style='width:250px;'><table><tr><td><tr><td class='gm_casino_name'>" + casino.name + "<td></tr><tr><td class='gm_casino_website'><a href='"+url+"' target='website'>website</a></td></tr><tr><td class='gm_casino_phone'>"+casino.phone+"</td></tr><tr></tr><tr><td class='gm_casino_address'>"+casino.line1+"</td></tr><tr><td class='gm_casino_address'>"+casino.city+", "+casino.state+" "+casino.zip+"</td></tr><tr><td class='casino_dist'>";
			if (isCasinoName == false)
			{
				markerHtml += casino.dist+" mi - ";
			}
			markerHtml += "<a href='"+directions+"' target='Directions'>Directions</a></td></tr></table></div>";
			var marker = createColorNumberMarkerNew(casino.lat, casino.lon,markerHtml,i,-1);
			map.addOverlay(marker);
			markers.push(marker);
		}
		casinoList+="<\/table>";
		document.getElementById('casino_list').innerHTML=casinoList;
		newData += "<\/table>";
		var msg="";
		if (casinoCount < 1)
		{
			if (isCasinoName == false)
			{
				msg = "No results near " + userGeo;
			}
			else
			{
				msg = "Unknown casino name. If a Location, clarify text to search again";
			}	
		}
		else
		{
			msg ="";
			if (drag == false)
			{
				if (isCasinoName == false)
				{
					msg = userGeo;
				}
				else
				{
					msg = "results for name search";
				}
			}
		}
		document.getElementById('loc_display').innerHTML=msg;
		if ((isCasinoName == false) && (casinoCount > 0))
		{
			showCircles(300);
		}
		if (drag == false)
		{
			resizeMap(map, markers, 15);
		}
	}


	function doSearch(page, didDrag)
	{
		currentPage = page;
		var element = document.getElementById("loc");
		var info_element = document.getElementById("loc_display");

		if ((didDrag == false) && (element.length < 4))
		{
       		info_element.innerHTML = "<div class='busy'>Enter more characters...<\/div>";
			return;
		}

       	info_element.innerHTML = "<div class='busy'>Searching ...<\/div>";
        var url = '/pm/search';
		var params = "";
		params += "page="+page+"&perPage="+perPage;
		if ((isCasinoName) && (didDrag == false))
		{
			params += "&terms="+escape(element.value);
		}
		else
		{
			params += "&lat="+uLatRad+"&lon="+uLonRad;
			params += "&r=300&userGeo="+userGeo;
		}
		owhat = element.value;
		if ((isCasinoName) && (didDrag == false))
		{
           document.getElementById("loc_display").innerHTML = 'search by name';
		}
		else if (didDrag)
		{
           document.getElementById("loc_display").innerHTML = 'new location';
		}

		GDownloadUrl(url+"?"+params, parseData);
		drag = didDrag;
			//document.getElementById('loc_display').innerHTML="&nbsp;";
	}
