function CornholioGMap2(container, opt_opts) {
	CornholioGMap2.base.call(this, container);
	
	this.stationMarkers = new Array();
	this.stations       = [];
	
	this.getIcon = function(name) {
		if (empty(this.baseIcon)) {
			this.baseIcon = new GIcon(G_DEFAULT_ICON);

			this.baseIcon.shadow = '';
			this.baseIcon.iconSize = new GSize(32, 37);
			this.baseIcon.iconAnchor = new GPoint(16, 34);
		}
		
		return new GIcon(this.baseIcon, '/images/map/icon.' + name + '.png');
	};
	
	this.addStationMarkers = function() {
		options = {icon: this.getIcon('station')};
		
		this.stationMarkers[0] = new GMarker(new GLatLng(0, 0), options);
		this.stationMarkers[1] = new GMarker(new GLatLng(0, 0), options);
		this.stationMarkers[2] = new GMarker(new GLatLng(0, 0), options);
		
		this.addOverlay(this.stationMarkers[0]);
		this.addOverlay(this.stationMarkers[1]);
		this.addOverlay(this.stationMarkers[2]);

		this.stationMarkers[0].hide();
		this.stationMarkers[1].hide();
		this.stationMarkers[2].hide();
	};
	
	this.showStations = function(point, callback) {
		var self = this;
	    
		if (empty(this.stationMarkers)) {
			this.addStationMarkers();
		}

		counter = 0;
		$.getJSON('/stations/jsonlist?lat=' + point.lat() + '&lng=' + point.lng(), function(response){
			$.each(response, function(i, item){
		    	self.stationMarkers[counter].setLatLng(new GLatLng(item.lat, item.lng));
		    	self.stationMarkers[counter].station = item;
		    	self.stationMarkers[counter].show();
		    	counter++;
			});
			
			if (typeof callback == "function") {
				callback(self.stationMarkers);
			}
	    });

	};

	this.showPoint = function(point, icon) {
		this.setUI(this.getDefaultUI());
	    this.setCenter(point, 14);

	    this.addOverlay(new GMarker(point, {icon: this.getIcon(icon)}));
	    
	    this.addStationMarkers();
	    this.showStations(point);
	}
}
CornholioGMap2.Extends(GMap2);
