(function($) {
	
	$.fn.extend({
		
		googleMap: function(options) {
			var defaults = {};
			var options = $.extend(defaults, options);
			var base = this;
			
			return this.each(function() {
				var obj = $(this);
				
				
				base.openInfoWindow = function(item,i){
					var content = "<h4>"+ item.name +"</h4>" + item.fullAddress + "<br/>";
					var latlng = markers[i].getLatLng();
					map.openInfoWindowHtml(latlng, content, { noCloseOnClick:false, maxWidth: 200 });
				};
				
				
				var defaultZoom = 3;
				var mapControl = new GLargeMapControl3D();
				var bounds = new GLatLngBounds();
				var markers = [];
				
				var map = new GMap2(document.getElementById(obj.attr("id")));
				map.setCenter(new GLatLng(43.05, -96), defaultZoom);
				map.setMapType(G_PHYSICAL_MAP);
				
				mgr = new MarkerManager(map);
				
				mgr.clearMarkers();
				markers = [];
				map.setZoom(defaultZoom);
				bounds = new GLatLngBounds();
				
				$.each(options.markers, function(i,item){
					var latlng = new GLatLng((item.latitude),(item.longitude));
					var marker = new GMarker(latlng)
					markers.push(marker);
					
					bounds.extend(latlng);
					GEvent.addListener(marker, "click", function() {
						base.openInfoWindow(item,i);
					});
					
					$("#searchResults .searchResult:eq("+i+")").click(function(){
						base.openInfoWindow(item,i);
					});
					
				});
				
				newzoom = map.getBoundsZoomLevel(bounds);
				newcenter = bounds.getCenter();
				
				map.setCenter (newcenter,newzoom);
				
				mgr.addMarkers(markers,0);
				mgr.refresh();
				
				
				
				
				
			});
			
			
		}
		
	});
	
})(jQuery);
