var markers = [];

function buildMaps3(lat, lon, arr, scale) {
	var latlng = new google.maps.LatLng(39, -98);
	geocoder = new google.maps.Geocoder();
	var myOptions = {
		zoom:3,
		center: latlng,
		navigationControl: true,
	    scaleControl: true,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};
	map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
	
	var display;
	var latlng;
	var letter;
	var image;
	
	// This clears all of the markers.
	for (var j = 0; j < markers.length; j++) {
		markerx = markers[j].marker;
		markerx.setMap();
	}
	
	var bounds = new google.maps.LatLngBounds();
	//bounds.extend(marker_main.getPosition());
	
	for (var i = 0; i < arr.length; i++) {
		latlng = new google.maps.LatLng(parseFloat(arr[i][5]), parseFloat(arr[i][6]));
		
		display = "<div style=\"color:#000000; text-align:left\">";
		if (arr[i][0].length > 0) {
			display += "<div><b>" + arr[i][0] + "</b></div>";
		}
		if (arr[i][1].length > 0) {
			display += "<div>" + arr[i][1] + "</div>";
		}
		display += "<div>";
		if (arr[i][2].length > 0) {
			display += arr[i][2];
		}
		if (arr[i][3].length > 0) {
			display += ", " + arr[i][3];
		}
		if (arr[i][4].length > 0) {
			display += " " + arr[i][4];
		}
		display += "</div></div>";
		
		letter = String.fromCharCode("A".charCodeAt(0) + i);
		image = "http://www.google.com/mapfiles/marker" + letter + ".png";

		var marker = new google.maps.Marker({
			position: latlng,
			map: map,
			title: arr[i][0],
			icon: image
		});
		
		markers[i] = new Object;
		markers[i].marker = marker;
		markers[i].html = display;
		markers[i].infowindow = new google.maps.InfoWindow({
			content: markers[i].html
		});
		markers[i].listener = makeClosure(i, markers[i].marker);
		// Extend the LatLngBound object
		bounds.extend(latlng);
	}
	if (arr.length >= 2) {
		map.fitBounds(bounds);
	} else {
		map.setCenter(latlng);
		map.setZoom(9);
	}
	//map.setCenter(marker_main.getPosition());
}

function checkMarkers(id, chk) {
	if (markers[id] != 0) {
		if (chk) {
			markers[id].show();
		} else {
			markers[id].hide();
		}
	} else {
		alert('Address not mapped since it could not be found.');
	}
}

function makeClosure(i, marker) {
	var listener = google.maps.event.addListener(marker, 'click', function() {
		openInfoWindow(i);
	});
	return listener;
}

function openInfoWindow(i) {
	if (typeof(lastwindow) == "number" && typeof(markers[lastwindow].infowindow) == "object") {
		markers[lastwindow].infowindow.close();
	}
	lastwindow = i;
	markers[i].infowindow.open(map, markers[i].marker);
}

function validateZip(f) {
	if (f.postal.value == '') {
		alert('Please enter a zip code.');
		f.postal.focus();
	} else if (f.postal.value.length < 5) {
		alert('Please enter a valid 5 digit zip code.');
		f.postal.focus();
	} else {
		var s = f.elements["type[]"];
		var list = new Array();
		var check = false;

		if (s != undefined) {
			// Check if the items are selected.
			if (s.length > 0) {
				for (var i = 0; i < s.length; i++) {
					if (s[i].checked == true) {
						list.push(s[i].value);
						check = true;
					}
				}
			} else if (s.checked) {
				check = true;
				list.push(s.value);
			}
		}
		if (!check) {
			alert('Please check off at least one dealer type.');
		} else {
			cursor_wait();
			document.getElementById('action').value = 'Searching...';
			var url = 'functions/load_dealers.php';
			var params = 'postal=' + f.postal.value + '&type=' + list.join(',') + '&showMap=' + f.showMap.checked;
			var ajax = new Ajax.Updater({success: 'resultsDiv'}, url, {method: 'get', evalScripts: true, parameters: params, onFailure: reportError});
		}
	}
	return false;
}