var map, scale;

var localBuffer = 1;
var markerURL;

var poznan_max_extend_2177 = new OpenLayers.Bounds(6411860, 5795086, 6440230,
		5821398);
var poznan_max_resolution_2177 = 100;
var poznan_max_zoom_level = 10;
var projection_2177 = new OpenLayers.Projection("EPSG:2177");

var poznan_layer_plan_2177 = 'plan_2177';
var MAP_ZOOM = 7;
var WMS_VERSION = "1.1.1";
var WMS_FORMAT = 'image/png';
var LAYER_BACKGROUND = "0xf0ebe7";
var TILECACHE_ADDRESS_LIST = [ "http://www.poznan.pl/tilecache/tilecache.cgi?",
		"http://www-bckp.city.poznan.pl/tilecache/tilecache.cgi?" ];
var ATTRIBUTION = '<span style="color:#000; background:#f0ebe7;opacity:0.8;line-height:0.7em !important;padding:2px; font-size: 0.8em">źródło: <a href="http://www.poznan.pl/plan">www.poznan.pl/plan</a></span>';

var wms_georss_obiekty, wms_georss, kml_layer = null;

function initPoznanMap(divId, showControls) {

	var options = {
		maxExtent : poznan_max_extend_2177,
		maxResolution : poznan_max_resolution_2177,
		units : 'm',
		controls:[new OpenLayers.Control.Navigation(),
		          new OpenLayers.Control.ArgParser(),
		          new OpenLayers.Control.Attribution()], 
		div : divId,
		projection : projection_2177,
		bgcolor : LAYER_BACKGROUND
	};

	map = new OpenLayers.Map(options);

	OpenLayers.IMAGE_RELOAD_ATTEMPTS = 5;

	if(showControls != false){
		map.addControl(new OpenLayers.Control.Navigation());
		map.addControl(new OpenLayers.Control.PanZoom());
		map.addControl(new OpenLayers.Control.ScaleLine());
	}

	markerURL = iconLinkDir + '/marker.png';
}

function addLayerPoznanPlan() {

	var wms_plan = new OpenLayers.Layer.WMS(OpenLayers.Lang.translate('map'),
			TILECACHE_ADDRESS_LIST, {
				layers : poznan_layer_plan_2177,
				'VERSION' : WMS_VERSION,
				format : WMS_FORMAT,
				bgcolor : LAYER_BACKGROUND
			}, {
				maxExtent : poznan_max_extend_2177,
				projection : projection_2177,
				maxResolution : poznan_max_resolution_2177,
				numZoomLevels : poznan_max_zoom_level,
				buffer : localBuffer,
				isBaseLayer : true,
				'attribution' : ATTRIBUTION
			});
	wms_plan.id = 'plan';
	map.addLayer(wms_plan);

	if (!map.getCenter()) {
		map.setCenter(new OpenLayers.LonLat(6426045, 5808242), 0, true, false);
		map.zoomToMaxExtent();
	}

}

/**
 * 
 * @param streetval
 *            ie "pl. Kolegiacki"
 * @param number
 *            ie "17"
 * @param zoom
 *            ie "10"
 * @param label
 *            text in the popup
 */
function showAddress(streetval, number, zoom) {
	OpenLayers.Feature.Vector.style['default'].strokeWidth = '3';
	OpenLayers.Feature.Vector.style['default'].strokeColor = 'red';
	if (kml_layer != null) {
		map.removeLayer(kml_layer);
		kml_layer.destroy();
		kml_layer = null;
	}
	if (wms_georss != null) {
		map.removeLayer(wms_georss);
		wms_georss.destroy();
		wms_georss = null;
	}
	if (wms_georss_obiekty != null) {
		map.removeLayer(wms_georss_obiekty);
		wms_georss_obiekty.destroy();
		wms_georss_obiekty = null;
	}

	var alertText = 'Nie znaleziono ulicy o podanej nazwie.';
	var newLayerName = "";
	var kmlLayerLink = pageLinkProxy + "?co=kml";
	var rssLayerLink = pageLinkProxy + "?co=rss";
	var param = "";

	param += "&street=" + streetval;
	kmlLayerLink = kmlLayerLink + param;

	kml_layer = new OpenLayers.Layer.GML(newLayerName, kmlLayerLink, {
		format : OpenLayers.Format.KML,
		maxExtent : poznan_max_extend_2177,
		projection : projection_2177,
		maxResolution : poznan_max_resolution_2177
	});
	kml_layer.id = 'kml_layer';
	var size = new OpenLayers.Size(180, 100);
	var ico = new OpenLayers.Icon(markerURL, new OpenLayers.Size(18, 26));

	if (number) {
		param += ", " + number;
		rssLayerLink = rssLayerLink + param;
		// map.addLayer(kml_layer);
		wms_georss = new OpenLayers.Layer.GeoRSS("punkt adresowy",
				rssLayerLink, {
					icon : ico,
					popupSize : size,
					
					showPopup : false
				});

		map.addLayer(wms_georss);

		wms_georss.id = 'wms_georss';
		wms_georss.maxExtent = poznan_max_extend_2177;
		wms_georss.projection = projection_2177;
		wms_georss.maxResolution = poznan_max_resolution_2177;
		wms_georss.events.on({
			"loadend" : function() {
				map.zoomToExtent(wms_georss.getDataExtent());
				//wms_georss.features[0].data.popupContentHTML = label;
				wms_georss.features[0].data = null;

				if (zoom) {
					map.zoomTo(zoom);
				} else {
					map.zoomTo(MAP_ZOOM);
				}
			}
		});

	} else {
		kml_layer.events.on({
			"loadend" : function() {
				map.zoomToExtent(kml_layer.getDataExtent());
				if (zoom) {
					map.zoomTo(zoom);
				} else {
					map.zoomTo(MAP_ZOOM);
				}
			}
		});
		map.addLayer(kml_layer);
	}

}

/*
 * function showAddressFeatureserver(streetval, number) { var kml; var rss;
 * 
 * if (streetval) { layer = window.parent.map.getLayer("ul"); if (layer !==
 * null) { window.parent.map.removeLayer(layer); try { layer.destroy(); } catch
 * (dfdf) { } } kml = new OpenLayers.Layer.Vector( "ulica", { strategies : [ new
 * OpenLayers.Strategy.Fixed() ], eventListeners : { "featuresadded" :
 * dataLoaded }, protocol : new OpenLayers.Protocol.HTTP( { url :
 * "http://www.poznan.pl/featureserver/featureserver.cgi/ulice/all.kml?queryable=a6&a6=" +
 * streetval, format : new OpenLayers.Format.KML({ extractStyles : true,
 * extractAttributes : true, maxDepth : 2 }) }) });
 * 
 * kml.events.on({ "loadend" : function() {
 * map.zoomToExtent(kml.getDataExtent()); } });
 * 
 * map.addLayer(kml); kml.id = "ul"; layer = window.parent.map.getLayer("pkt");
 * if (layer !== null) { window.parent.map.removeLayer(layer); try {
 * layer.destroy(); } catch (dfdf) { } } if (number) { rss = new
 * OpenLayers.Layer.GeoRSS( "punkt adresowy",
 * 'http://www.poznan.pl/featureserver/featureserver.cgi/adresy/all.georss?queryable=nr,wg_nazwiska_wydruk&nr=' +
 * number + '&wg_nazwiska_wydruk=' + streetval); map.addLayer(rss); rss.id =
 * "pkt"; } } }
 * 
 * function dataLoaded(event) {
 * this.map.zoomToExtent(event.object.getDataExtent()); var style_red =
 * OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
 * style_red.strokeColor = "#FF0000"; style_red.fillColor = "#FA4500";
 * style_red.strokeOpacity = 0.7; style_red.strokeWidth = 3; //
 * OpenLayers.Feature.Vector.style['default'] = style_red;
 * this.features[0].style = style_red; this.map.zoomOut(); }
 */
