var gMarkers = Array();
var map;
var dealerType;  // Type of Builder the API needs to load

function mapload(apitype) {
	$('#search-indicator').hide();
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.setCenter(new GLatLng(39.090432, -94.583653), 3);
		map.enableScrollWheelZoom();
		GEvent.addListener(map,'moveend',function(){markerResults.calculate();});
		map.addControl(new GSmallMapControl());
	}
	else
	{
		alert("Sorry this web browser is not google map compatible.");
	}
	dealerType = apitype;
	apicsv();
}

/*
function api(apitype)
{
	$(document).ready(
		function(){
			$('#search-indicator').show();
			$.getJSON("/distributors/" + apitype,
					function(data) {
						$.each(data.dealers, function(i,dealer){
							var newid = gMarkers.length;
							gMarkers[newid] = new Array();
							gMarkers[newid][0] = new GMarker(new GLatLng(dealer.lat,dealer.lon));
							gMarkers[newid][1] = dealer;
							map.addOverlay(gMarkers[newid][0]);
							
							// Add Info:
							$('<div>').attr('id','dealer'+gMarkers[newid][1].id).attr('class','dealerwrapper').appendTo('#outputListings');
							$('<div>').attr('class','dealertitle').text(gMarkers[newid][1].name).appendTo('#dealer'+gMarkers[newid][1].id);
							$('<div>').attr('class','dealertitle').text(gMarkers[newid][1].contact).appendTo('#dealer'+gMarkers[newid][1].id);
							$('<div>').text(gMarkers[newid][1].address).appendTo('#dealer'+gMarkers[newid][1].id);
							$('<div>').text(gMarkers[newid][1].city + ', ' + gMarkers[newid][1].state + ' ' + gMarkers[newid][1].zip).appendTo('#dealer'+gMarkers[newid][1].id);
							$('<div>').text(gMarkers[newid][1].phone).appendTo('#dealer'+gMarkers[newid][1].id);
							$('<div>').html('<a href="mailto:' + gMarkers[newid][1].email + '">' + gMarkers[newid][1].email + '</a>').appendTo('#dealer'+gMarkers[newid][1].id);
							$('<div>').html('<a href="' + gMarkers[newid][1].website + '">' + gMarkers[newid][1].website + '</a>').appendTo('#dealer'+gMarkers[newid][1].id);
							$('#dealer' + gMarkers[newid][1].id).hide();
							
							gMarkers[i][0].bindInfoWindowHtml($('#dealer'+gMarkers[i][1].id).html());
							
							$('#search-indicator').hide();
						});
					}
			);
		}
	);
}
*/

function apicsv()
{
	$(document).ready(
		function()
		{
			$('#search-indicator').show();  // Show the Spinning Search
			$.get('/distributors.csv', function(data) 
			{
				distribs = $.csv()(data);
				$.each(distribs, function(i,dealer) {
					if(dealer[0] == dealerType || dealer[0] == "both")
					{
						var newid = gMarkers.length;
						gMarkers[newid] = new Array();
						gMarkers[newid][0] = new GMarker(new GLatLng(dealer[11],dealer[12]));
						gMarkers[newid][1] = dealer;
						gMarkers[newid][1][99] = i;
						map.addOverlay(gMarkers[newid][0]);
						
						// Add Info:
						$('<div>').attr('id','dealer'+i).attr('class','dealerwrapper').appendTo('#outputListings');
						$('<div>').attr('class','dealertitle').text(gMarkers[newid][1][1]).appendTo('#dealer'+i);
						$('<div>').attr('class','dealertitle').text(gMarkers[newid][1][2]).appendTo('#dealer'+i);
						$('<div>').text(gMarkers[newid][1][3]).appendTo('#dealer'+i);
						$('<div>').text(gMarkers[newid][1][4] + ', ' + gMarkers[newid][1][5] + ' ' + gMarkers[newid][1][6]).appendTo('#dealer'+i);
						$('<div>').text(gMarkers[newid][1][7]).appendTo('#dealer'+i);
						$('<div>').html('<a href="mailto:' + gMarkers[newid][1][10] + '">' + gMarkers[newid][1][10] + '</a>').appendTo('#dealer'+i);
						$('<div>').html('<a href="' + gMarkers[newid][1][9] + '">' + gMarkers[newid][1][9] + '</a>').appendTo('#dealer'+i);
						$('#dealer' + i).hide();

						gMarkers[newid][0].bindInfoWindowHtml($('#dealer'+i).html());

						$('#search-indicator').hide();
					}
				})
			});
		}
	)
}

var zipcode = {
	
	search: function(searchBox)
	{
		$('#search-indicator').show();
		this.zip = $('#zip').attr('value');
		var geoCoder = new GClientGeocoder();
		geoCoder.getLatLng(this.zip,function(GLatLng){
			if(GLatLng != null)
			{
				mapControls.recenter(GLatLng);
				mapControls.recenter(GLatLng);
				$('#search-indicator').hide();
			}
			else
			{
				$('#search-indicator').hide();
				alert("Could not find this Zip Code.\n\n Please try again.");
			}
		});
	}
	
}


var markerResults = {
	
	calculate: function()
	{
		var bounds = map.getBounds();
		var showcount = 0;
		for(var i=0; i<gMarkers.length; i++)
		{
			if(bounds.containsLatLng(gMarkers[i][0].getLatLng()))
			{
				// Show Output
				if(showcount < 12)
				{
					$('#dealer' + gMarkers[i][1][99]).show();
					showcount++;
				}
				else
				{
					$('#dealer' + gMarkers[i][1][99]).hide();
				}
			}
			else
			{
				$('#dealer' + gMarkers[i][1][99]).hide();
			}
		}
	}
}


var mapControls = {
	
	recenter: function(gLatLon)
	{
		map.panTo(gLatLon);
		map.setZoom(9);
	}

	
}

