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), 11);
    
    marker = false;
    loadXML('All');
}


function loadXML(thecommodity) {
    //map.recenterOrPanToLatLng(new GPoint(-91.0,43.4), 11);
    var request = GXmlHttp.create();
    request.open("GET", "data.xml?v=2", true);
    request.onreadystatechange = function() {
      if (request.readyState == 4) {
        map.clearOverlays();
        var xmlDoc = request.responseXML;
        var markers = xmlDoc.documentElement.getElementsByTagName("marker");
           
        for (var i = 0; i < markers.length; i++) {
            var point = new GPoint(parseFloat(markers[i].getAttribute("lng")),
                                   parseFloat(markers[i].getAttribute("lat")));
               
            var address = markers[i].getAttribute("address");
            var image = markers[i].getAttribute("image");
            var commodity = markers[i].getAttribute("commodity");
            var company = markers[i].getAttribute("company");
            var url = markers[i].getAttribute("url");
            
            if (commodity.indexOf(thecommodity) != -1      || thecommodity == 'All') { 
                var marker = createInfoMarker(point, address, image, commodity, company, url);
                map.addOverlay(marker);
            }
        }
        
        
      }
    }
    request.send(null);
    
}

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;
    }
