/* Class: RW2MapConfig */
var FFAMapConfig = OpenLayers.Class(MapConfig,
{
	uiName: "ffa",
	mapMarginLeft: 0,
	mapMarginTop: 0,
	mapPaneTypes: {DEFAULT: "MapUI.html"},
	locationLayer: null,
	pointLocation: null,
	iconName: null,

	getResources: function()
	{
		return ["base/LayerDefinitions.js",
			"openlayers/lib/OpenLayers/Control/PDSCrosshair.js",
			"ffa/MapUI.css"];
	},

	createBaseLayers: function()
	{
		return [LayerDefinitions.BASESET_GOOGLE_PHOTO_HYBRID_STREET,
			LayerDefinitions.BASESET_MAP];
	},

	createApplicationLayers: function()
	{
		var layers = MapConfig.prototype.createApplicationLayers.apply(this, arguments);
		this.locationLayer = new OpenLayers.Layer.Markers("Locations");
		layers.push(this.locationLayer);
		return layers;
	},

	createControls: function()
	{
		OpenLayers.ImgPath = this.hostName + "/" + this.appName + "/base/images/openlayers/gold01/";
		var xhIcon = new OpenLayers.Icon(this.hostName + "/" + this.appName + "/ffa/images/target_blue.gif", new OpenLayers.Size(40, 40));
		var xhair = new OpenLayers.Control.PDSCrosshair({icon:xhIcon});
		return [new OpenLayers.Control.PDSPanZoom({options:[]}), xhair];
	},

	setLocation:function(lonlat)
	{
		this.locationLayer.setVisibility(true);
		var mp = this._pointToMap(lonlat);
		if (this.pointLocation == null)
		{
			var iconPath = this.getImageUrl(this.iconName);
			var size =  new OpenLayers.Size(32, 32);
			var offset = new OpenLayers.Pixel(-16, -28);
			var icon = new OpenLayers.Icon(iconPath, size, offset);
			this.pointLocation = new OpenLayers.Marker(mp, icon);
			this.locationLayer.addMarker(this.pointLocation);
		}
		else
			this.pointLocation.lonlat = mp;

		this.locationLayer.redraw();
	},

	clearMarkers:function()
	{
		this.locationLayer.clearMarkers();
	},
	
	addMarker:function(lon, lat, icon)
	{
		this.locationLayer.setVisibility(true);
		var mp = this._pointToMap(new OpenLayers.LonLat(lon, lat));
		var iconPath = this.getImageUrl(icon);
		var size =  new OpenLayers.Size(39, 49);
		var icon = new OpenLayers.Icon(iconPath, size, new OpenLayers.Pixel(-size.w/2, -size.h));
		this.locationLayer.addMarker(new OpenLayers.Marker(mp, icon));
		this.locationLayer.redraw();
	},
	
	
	
	addMarkers:function(markersData)
	{
		this.locationLayer.setVisibility(true);

		for (var i = 0; i < markersData.length; i++)
		{
			var data = markersData[i];
			var mp = this._pointToMap(new OpenLayers.LonLat(data.lon, data.lat));
			var iconPath = this.getImageUrl(data.icon);
			var size =  new OpenLayers.Size(39, 49);
			var icon = new OpenLayers.Icon(iconPath, size, new OpenLayers.Pixel(-size.w/2, -size.h));
			var marker = new OpenLayers.Marker(mp, icon);
			marker.data = data;
			marker.layer = this.locationLayer;
			marker.map = this.map;
			marker.id = data.id;
			this.locationLayer.addMarker(marker);
			this.locationLayer.registerEvents(marker);
		}

		this.locationLayer.redraw();
	},
	
	selectClub: function(clubId)
	{
		this.locationLayer.closePopup();
		var markers = this.locationLayer.markers;
		for (var m = 0; m < markers.length; m++)
		{
			var marker = markers[m];
			if (marker.id && marker.id == clubId)
			{
				this.setCenter(this._pointToLonLat(marker.lonlat), 16);
				marker.events.triggerEvent("click", null);
				return;
			}
		}
		
		alert("marker not found");
	},

	getLocation: function()
	{
		if (this.pointLocation == null)
			return null
		return this._pointToLonLat(this.pointLocation.lonlat);
	},

	getImageUrl: function(name)
	{
		return this.hostName + "/" + this.appName + "/ffa/images/" + name;
	}
});
