var map;
var overlay;
var baseIcon = new GIcon();
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);
baseIcon.infoShadowAnchor = new GPoint(18, 25);

 function drawCircle(point,radius) { 
    
    var lng = point.x;
    var lat = point.y;
    var cColor = "#3366ff";
    var cWidth = 2;
    var Cradius = radius;   
    var d2r = Math.PI/180; 
    var r2d = 180/Math.PI; 
    var Clat = (Cradius/3963)*r2d;   
    var Clng = Clat/Math.cos(lat*d2r); 
    var Cpoints = []; 
    for (var i=0; i < 33; i+=2) { 
         var theta = Math.PI * (i/16); 
         Cx = lng + (Clng * Math.cos(theta)); 
         Cy = lat + (Clat * Math.sin(theta)); 
         var P = new GPoint(Cx,Cy);
         Cpoints.push(P); 
    }; 
    map.addOverlay(new GPolyline(Cpoints,cColor,cWidth)); 
} 
           
function drawMap() {
    map = new GMap(document.getElementById("map"));
    map.addControl(new GMapTypeControl());
    map.addControl(new GLargeMapControl());
    map.centerAndZoom(new GPoint(-96.404932, 43.239679), 12);
    
    marker = false;
    loadXML('All');
}


function loadXML(thecommodity) {
    GDownloadUrl("data-2012.02.01.xml", function(data, responseCode) {
        var xml = GXml.parse(data);
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
            var get = function (s) { return markers[i].getAttribute(s); };
            var getf = function (s) { return parseFloat(get(s)); };

            var m = function () {
                var point, icon, html, marker;
                point = new GLatLng(getf("lat"), getf("lng"));

                icon = new GIcon(baseIcon);
                icon.image = 'images/maps/082.png';
                html = "<div align=left><a href=\"" + get('url') + "\" target=\"_blank\">" + get('company') + "</a><br>" + get('address') + "<br>" + get('commodity') + "</div>";

                marker = new GMarker(point, { icon: icon });
                GEvent.addListener(marker, "click", function() {
                    this.openInfoWindowHtml(html);
                });
                
                return marker;
            };

            map.addOverlay(m());
        }
    });
}

function filterLocations(commodity) {
    loadXML(commodity);
}

function getLocation() {
    
    var url;
    
    url = 'http://www.farmstech.com/clientstest/geocodeCSV.asp?zip=' + document.getElementById("address").value;
    
    map.removeOverlay(marker);
    map.closeInfoWindow();
    var request = GXmlHttp.create();
    request.open('GET', url , true);
    request.onreadystatechange = function() {
      if (request.readyState == 4) {
        
        var response = request.responseText;
        
        var arr = response.split(',');
        if (arr.length > 1) {
            var newpoint = new GPoint(arr[1], arr[0]);
            
            
            marker = createInfoMarker(newpoint, arr[2] + ', ' + arr[3], "images/maps/216.png", "", "", "");
        
            map.addOverlay(marker);	
            map.recenterOrPanToLatLng(newpoint);
        
        }
        else {
            alert('Zip code not found');
        }			
      }
    }
    request.send(null);
}

function createInfoMarker(point, address, image, commodity, company, url) {

    var icon = new GIcon(baseIcon);
    icon.image = image;
    var html
    html = "<div align=left><a href=\"" + url + "\" target=\"_blank\">" + company + "</a><br>" + address + "<br>" + commodity + "</div>";
    var marker = new GMarker(point, icon);
    GEvent.addListener(marker, "click",
        function() {
            marker.openInfoWindowHtml(html);
            
        }
    );
    return marker;
    }

