var s_markers           = new Array();
var s_address           = "";
var s_addressLatLng     = null;
var s_zonePolygon		= null;
var s_zone				= -1;

function HandleClick(latlng)
{
	if (latlng)
	{
		FindZone(latlng);
		//alert(latlng.lat() + " " +  latlng.lng());
	}
}

function FindZone(latlng)
{
    var request = GXmlHttp.create();

    request.open("GET", "getzone.php?lat=" + latlng.lat() + "&lng=" + latlng.lng(), true);
    request.onreadystatechange = function()
    {
        if (request.readyState == 4)
        {
            var response = request.responseText;
			//alert(response);

			var fields = response.split(",");

			if (s_zonePolygon)
			{
				map.removeOverlay(s_zonePolygon);
			}

			var zoneDiv = document.getElementById("zoneDiv");
			s_zone = fields[0];

			if (s_zone > -1)
			{
				var z;
				if (s_zone < 3)
				{
					z = s_zone;
				}
				else if (s_zone > 5)
				{
					z = s_zone - 2;
				}
				else
				{
					z = 3;
				}
				zoneDiv.innerHTML = '<b>Zone: ' + z + '</b>'; 
				AddZone(fields);
			}
			else
			{
				zoneDiv.innerHTML = '<b>Not in zone</b>'; 
			}
        } // if
    } // function
    request.send(null);
}

function AddZone(fields)
{
    var f = 5;
    var numFields = fields.length;
    var latlngs = new Array();
	var polygon;
	var pt;

	latlngs = [];

	var numPts = (numFields - 5) / 2;
	numPts--;
	for (pt = 0; pt < numPts; pt++)
	{
		var lng = parseFloat(fields[f++]);
		var lat = parseFloat(fields[f++]);

		var latlng = new GLatLng(lat, lng);
		latlngs.push(latlng);
	}

	polygon = new GPolygon(latlngs, "#FF0000", 2, 1, "#FF0000", 0, {clickable:false});
	s_zonePolygon = polygon;
	map.addOverlay(polygon);
}

function GetAddress()
{
    var zip     = document.getElementById('zip').value;
    var city    = document.getElementById('city').value;
    var state   = document.getElementById('state').value;
    var street  = document.getElementById('street').value;
	var addressOK = false;

	if (street == '')
	{
		if (!s_firstTime)
		{
			alert("Please enter a street number and street.");
		}
	}
	else if (city == '')
	{
		if (!s_firstTime)
		{
			alert("Please enter a city.");
		}
	}
	else if (state == '')
	{
		if (!s_firstTime)
		{
			alert("Please enter a state.");
		}
	}
	else if (zip == '')
	{
		if (!s_firstTime)
		{
			alert("Please enter a zip code.");
		}
	}
	else
	{
		addressOK = true;
	}
	
	s_firstTime = false;
	
	if (addressOK)
	{
		s_address = street + "," + city + "," + state + "," + zip;
		HandleSearch()
	}
    
}

function HandleSearch()
{
//    var geoCoder;
    
    if (s_address != "")
    {
        //if (!geoCoder)
        //{
        var geoCoder = new GClientGeocoder();
        //}
        
        geoCoder.getLatLng
		(
            s_address,
            function (response)
            {
                s_addressLatLng = response;
                if (!response)
                {
                    alert("Error geocoding address");
                }
                else
                {
					var expireDate = new Date();
					expireDate.setMonth(expireDate.getMonth() + 6);
					document.cookie = "address=" + s_address + ";expires=" + expireDate.toString();
//  					document.cookie = "address=" + "" + ";expires=" + expireDate.toString();
                    ShowMarker();
                }
           }
		);
	}
}

function ShowMarker()
{
    var zip     = document.getElementById('zip').value;
    var city    = document.getElementById('city').value;
    var state   = document.getElementById('state').value;
    var street  = document.getElementById('street').value;

    var html =  '<div style="color:#0000FF;">' +  
                street + '<br />' +
                city   + ', '     +
                state  + '<br />' +
                zip    + '<br />' +
                '</div>'

    CreateMarker(s_addressLatLng, html);
    map.setCenter(s_addressLatLng);
	FindZone(s_addressLatLng);
   
}

function Clear()
{
	var numMarkers = s_markers.length;
	for (var m = 0; m < numMarkers; m++)
	{
		map.removeOverlay(s_markers[m]);
	}
	s_markers = [];
}


function CreateMarker(latlng, html)
{
    var marker = new GMarker(new GLatLng(latlng.lat(), latlng.lng()));
    GEvent.addListener(
        marker, 
        'click', 
        function()
        {
            marker.openInfoWindowHtml(html);
        }
    );

    s_markers.push(marker);    
    map.addOverlay(marker);
}

function AddressFromCookie()
{
    var cookies = document.cookie.split("; ");
    var found = false;
	
	for (var i = 0; i < cookies.length; i++)
	{
		if (cookies[i].split("=")[0] === "address") 
		{
		    var address = cookies[i].split("=")[1].split(",");
			if (address.length == 4)
			{
			   document.getElementById('zip').value		= address[3];   
			   document.getElementById('city').value	= address[1];  
			   document.getElementById('state').value	= address[2]; 
			   document.getElementById('street').value	= address[0];
			   break;
			}
		}
	}
}