	var geocoder;
	var map;
	var markersArray = [];
	var distanceArray = Create2DArray(10000);
	var t1;
	var n1;
	var radius = 1;
	var infowindow = new google.maps.InfoWindow();
	
	$(document).ready(function() {
		$(".rbDistance").click(function() {
			radius = $(this).val();
		});
	});
	
	function Create2DArray(rows) {
	  var arr = [];

	  for (var i=0;i<rows;i++) {
		 arr[i] = [];
	  }

	  return arr;
	}
	
	function sortMultiDimensional(a,b)
	{
		// this sorts the array using the second element    
		return ((a[0] < b[0]) ? -1 : ((a[0] > b[0]) ? 1 : 0));
	}
	
	function initialize() {
		geocoder = new google.maps.Geocoder();
		var latlng = new google.maps.LatLng(41.6661573,  -81.3395520);
		var myOptions = {
			zoom: 12,
			center: latlng,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		}
		map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
	}
	
	//Calculate Distance
	function calcAndDisplay()
	{
		// convert coordinates to radians
		lat1 = toRad(t1);
		lon1 = toRad(n1);
		var Rm = 3959;
		var count = 0;
	
		if(radius == '')
			radius = 1;
	
		if (markers) {
			for (var level in markers) {
			  for (var i = 0; i < markers[level].length; i++) {
				var details = markers[level][i];
				t2 = details.location[0];
				n2 = details.location[1];
				
				lat2 = toRad(t2);
				lon2 = toRad(n2);
				
				// find the differences between the coordinates
				dlat = lat2 - lat1;
				dlon = lon2 - lon1;
				
				// here's the heavy lifting
				a  = Math.pow(Math.sin(dlat/2),2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(dlon/2),2);
				c  = 2 * Math.atan2(Math.sqrt(a),Math.sqrt(1-a)); // great circle distance in radians
				dm = c * Rm; // great circle distance in miles
				
				// round the results down to the nearest 1/1000
				mi = Math.round(dm);
				
				if(mi <= radius)
				{
					var myLatlng = new google.maps.LatLng(details.location[0],details.location[1]);
					var marker = new google.maps.Marker({
						map:map,
						position: myLatlng,
						icon: 'NeighborhoodLogo.png',
						title: details.city + ', ' + details.type + ', ' + details.completed
					});
					distanceArray[count][0] = mi;
					distanceArray[count][1] = marker;
					count = count + 1;
					markersArray.push(marker);
					google.maps.event.addListener(marker, 'click', onMarkerClick);
				}
			  }
			}
			distanceArray = distanceArray.sort(sortMultiDimensional);
			for(k = 2000; k < distanceArray.length; k++)
			{
				distanceArray[k][1].setMap(null);
			}
		  }
	}
 
	//Geocode typed location and center map
	function codeAddress() {
		var continueFlag = true;
		
		if(document.getElementById('city').value == '' && document.getElementById('state').value == '' && document.getElementById('zip').value == ''){
			continueFlag = false;
		}

		if(continueFlag){
			clearOverlays();
			var address = document.getElementById("address").value + ', ' + document.getElementById("city").value + ', ' + document.getElementById("state").value + ', ' + document.getElementById("zip").value;
			geocoder.geocode( { 'address': address}, function(results, status) {
			  if (status == google.maps.GeocoderStatus.OK) {
				map.setCenter(results[0].geometry.location);
				var marker = new google.maps.Marker({
					map: map, 
					position: results[0].geometry.location,
					icon: 'yourhouse.png'
				});
				markersArray.push(marker);
				var str = results[0].geometry.location.toString();
				var splitLocation = str.split(",");
				t1 = splitLocation[0].substr(1);
				n1 = splitLocation[1].substr(0, splitLocation[1].length -1);
				
				calcAndDisplay();
			  } else {
				alert("Geocode was not successful for the following reason: " + status);
			  }
			});
		}
	}
	
	//removes overlays
	function clearOverlays() {
		if (markersArray) {
			for (i in markersArray) {
				markersArray[i].setMap(null);
			}
		}
	}
	
	function toRad(deg) {
		return deg * Math.PI/180;
	}
	
	var onMarkerClick = function() {
		var marker = this;
		var title = marker.getTitle();
		var details = title.split(',');
		infowindow.setContent(details[0] + "<br />Project: " + details[1] + "<br />Completed on: " + details[2]);
		infowindow.open(map, marker);
    };
    google.maps.event.addListener(map, 'click', function() {
		infowindow.close();
    });
