$(function(){
	if($('#inspection-table').length && $('#filter').length) {
		var IncrementalSearchableTable = new IncrementalSearch('inspection-table', 'filter', 1);
	}
	
	var mapDiv = $('#map');
	if(mapDiv.length && addresses) {
		var GZoom = new Array(2, 4, 6, 10, 12, 13, 16, 16, 17);
		
		var map = new GMap2(mapDiv[0]);
		map.setCenter(new GLatLng(37.4419, -122.1419), 19);
		map.addControl(new GMapTypeControl());
		map.addControl(new GLargeMapControl3D());
		map.enableScrollWheelZoom();
		
		var group = [];
		var counter = 0;
		
		for (var i in addresses) {
			var geocoder = new GClientGeocoder();
			
			geocoder.getLocations(addresses[i], function(response){
				counter++;
				//console.log(counter);
				
				if (response && response.Status.code == 200) {
					var place = response.Placemark[0];
					var accuracy = place.AddressDetails.Accuracy;
					var point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
					point.zoom = GZoom[accuracy];
					var marker = new GMarker(point);
					map.addOverlay(marker);
					marker.bindInfoWindowHtml('<br />' + place.address);
					
					group.push(point);
					
					if (counter == addresses.length) {
						var bounds = new GBounds(group);
						var geoBounds = new GLatLngBounds(new GLatLng(bounds.minY, bounds.minX), new GLatLng(bounds.maxY, bounds.maxX));
						
						var center = geoBounds.getCenter();
						if (group.length > 1) {
							var zoom = map.getBoundsZoomLevel(geoBounds);
							if (zoom > 18) 
								zoom = 18;
						} else {
							var zoom = group[0].zoom;
						}
						
						map.setCenter(center, zoom);
					
						$(mapDiv).css('visibility', 'visible');
					}
				}
			});
		}
		
		/*
		var map = new YMaps.Map($(mapDiv)[0]);
		map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 11);
		map.addControl(new YMaps.TypeControl());
		map.addControl(new YMaps.Zoom());
		map.enableScrollZoom();
		
		var group = new YMaps.GeoCollectionBounds();
		var counter = 0;
		
		for (var i in addresses) {
			var geocoder = new YMaps.Geocoder(addresses[i], {
				results: 1,
				boundedBy: map.getBounds()
			});
			
			YMaps.Events.observe(geocoder, geocoder.Events.Load, function(){
				counter++;
				if (this.length()) {
					var geoResult = this.get(0);
					map.addOverlay(geoResult);
					group.add(geoResult.getGeoPoint());
					
					if (counter == addresses.length) {
						map.setCenter(group.getCenter(), group.getMapZoom(map));
						$(mapDiv).css({
							visibility: 'visible'
						});
					}
				}
			});
		}
		*/
	}
});
