jQuery.fn.gmaps = function(settings) {
	return this.each(function() {
		new jQuery.gmaps(this, settings);
	});
}
jQuery.gmaps = function(obj, settings) {
	var map = false;
	var gitems = new Array();	
	settings = jQuery.extend({data:{locations:[]}, infopanel:'none', center:[43.9117446 , -80.4418945],	zoom:7, relativepath:'http://www.agentprofile.ca/'}, settings);
	if (GBrowserIsCompatible()) {
	    map = new GMap2(obj);
		var mt = map.getMapTypes();
		for (var i=0; i<mt.length; i++) {
		   	mt[i].getMinimumResolution = function() { return 7; }
		   	mt[i].getMaximumResolution = function() { return 15; }
		}
		map.addControl(new GLargeMapControl());
		if (typeof(settings.infopanel) != Boolean) {
			GEvent.addListener(map, "moveend", function() {
				var center = map.getCenter();
				var zoom = map.getZoom();
				$(settings.infopanel).html(center.toString() + ' zoom: ' + zoom);
			});
		}
		map.setCenter(new GLatLng(settings.center[0],settings.center[1]), settings.zoom);
		var tilelayer = new GTileLayer(new GCopyrightCollection(), 0, 17);
		tilelayer.getTileUrl = function(tile, zoom) { return "/overlay.gif"; };
		tilelayer.getOpacity = function() { return 0.4; }
		map.addOverlay(new GTileLayerOverlay(tilelayer));
        function createMarker(point, number) {
			var icon = new GIcon();
			icon.image = settings.data.locations[number].icon;
			icon.shadow = settings.data.locations[number].shadow;
			icon.iconSize = new GSize(16, 16);
    		icon.shadowSize = new GSize(25.0, 16.0);
			icon.iconAnchor = new GPoint(8, 8);
			icon.infoWindowAnchor = new GPoint(8, 8);
          	var marker = new GMarker(point, icon);  	
         	GEvent.addListener(marker, 'click', function() {
				marker.openInfoWindowHtml(settings.data.locations[number].simpleContent);
			});
			gitems.push(marker);          
          	return marker;
        }
		for (i=0;i<settings.data.locations.length;i++) {
			var point = new GLatLng(settings.data.locations[i].latitude,settings.data.locations[i].longitude);
			map.addOverlay(createMarker(point, i));
		}
		$('.'+obj.id).each(function() {
			this.associated_map = obj.id;
			$(this).click(function() {
				$('#'+this.associated_map).get(0).gmap.jq_maps.goTo($('#'+this.associated_map).get(0),this.tabIndex - 1);
				return false;
			});
		});
		map.jq_maps = {
			'settings': settings,
			'gitems': gitems,
			'goTo': function(div_gmap, indice) {
				div_gmap.gmap.setZoom(div_gmap.gmap.jq_maps.settings.data.locations[indice].zoom);
				div_gmap.gmap.panTo(new GLatLng(div_gmap.gmap.jq_maps.settings.data.locations[indice].latitude, div_gmap.gmap.jq_maps.settings.data.locations[indice].longitude));
				div_gmap.gmap.jq_maps.gitems[indice].openInfoWindowHtml(div_gmap.gmap.jq_maps.settings.data.locations[indice].simpleContent);
			}
		}
	}	
	obj.gmap = map;
}