var pageLink = new Array("http://www.poznan.pl/tilecache/tilecache.cgi?", "http://www-bckp.city.poznan.pl/tilecache/tilecache.cgi?");

var layer_switcher = null;
var permalink_control = null;
var map = null;
var popup = null;

var maxResolutionVal = 50;
var localBuffer = 1;
var imageFormat = 'image/png';
var localOpacity = 1.0;
var isTransparent = 'true';
var maxZoomLevels = 10;
var localMaxExtend = new OpenLayers.Bounds(13600.0, 95000.0, 37600.0, 120000.0);

var localProjection = "EPSG:4326";

var kml_layer = null;
var wms_georss = null;
var wms_cmentarz = null;
var wms_gml = null;
var wms_georss_obiekty = null;
var wms_georss_mpk = null;
var wms_marker = null;
var wms_mpk = null;

var transparentImageFormat = 'image/png';
var ieSuff = "";
var imgIESuff = "png";
//wkt
var wkt_features = null;
var wkt_vectors = null;
var wkt_bounds = null;
var wkt = null;
var cemeteries = 'false';
var word="";

function addEvent(obj, evType, fn){
    if (obj) {
        if (obj.addEventListener) {
            obj.addEventListener(evType, fn, false);
            return true;
        } else if (obj.attachEvent) {
			var r = obj.attachEvent("on" + evType, fn);
            return r;
		} else {
			return false;
		}
    }
}

//focus on map in Opera, fixes problem with '#' and utf encoding in Opera
addEvent(document.getElementById('OpenMap'), 'load', przesun);
function przesun()
{
    if (navigator.appName == 'Opera') {
        document.getElementById('OpenMap').scrollTo(document.getElementById('OpenMap').offsetTop);
    }
}

function setOrto(){
    map.setBaseLayer(wms_orto, true);
    map.events.triggerEvent("changebaselayer");
}

function setPlan(){
    map.setBaseLayer(wms_plan, true);
    map.events.triggerEvent("changebaselayer");
}

function setHybryd(){
    map.setBaseLayer(wms_hybryda, true);
    map.events.triggerEvent("changebaselayer");
}

function setHybridWithBuildings(){
    map.setBaseLayer(wms_hybryda_budynki, true);
    map.events.triggerEvent("changebaselayer");
}

function przewin(){
    document.getElementById('OpenMap').scrollTop = document.getElementById('OpenMap').offsetTop;
    
}

function loadPoints(items, area){
    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;
    }
    if (wms_georss_mpk != null) {
        map.removeLayer(wms_georss_mpk);
        wms_georss_mpk.destroy();
        wms_georss_mpk = null;
    }
    
    var zoom = MAP_ZOOM;
    var alertText = 'Nie znaleziono ulicy o podanej nazwie.';
    var newLayerName = "";
    var kmlLayerLink = pageLinkProxy + "?co=kml";
    var rssLayerLink = pageLinkProxy + "?co=rss";
    var param = "";
    var isAddressExist = true;
    if (OpenLayers.Util.getElement('id_ulica_street_lookup').value) {
        newLayerName = OpenLayers.Util.getElement('id_ulica_street_lookup').value;
    }
    
    if (area == true) {
        zoom = MAP_ZOOM - 2;
        alertText = 'Nie znaleziono obszaru o podanym identyfikatorze.';
        newLayerName = OpenLayers.Util.getElement('sa_name').value;
        var sa_id = encodeURIComponentNew(OpenLayers.Util.getElement('sa_id').value);
        param = "&sa_id=" + sa_id;
    } else {
        var street_without_uri_encoding = (OpenLayers.Util.getElement('id_ulica_street_lookup').value);
        var street = encodeURIComponentNew(street_without_uri_encoding);
        param = "&street=" + street;
        
        if (street_without_uri_encoding.indexOf(",") >= 0 && items != null) {
            isAddressExist = false;
            for (var i = 0; i < items.length; ++i) {
                if (items[i].addressPoints) {
                    isAddressExist = true;
                    break;
                }
            }
        }
    }
    
    kmlLayerLink = kmlLayerLink + param;
    rssLayerLink = rssLayerLink + param;
    
    for (var i = 0; i < items.length; ++i) {
        if (i == 0) {
            map.setCenter(new OpenLayers.LonLat(items[i].x - 1, items[i].y - 1), zoom, true, false);
            break;
        }
    }
    
    if (items != null && items.length > 0) {
        kml_layer = new OpenLayers.Layer.GML(newLayerName, kmlLayerLink, 
	        {
        	    format: OpenLayers.Format.KML,
    	        maxExtent: localMaxExtend,
	            projection: localProjection,
            	maxResolution: maxResolutionVal
        	}
        );
        kml_layer.id = 'kml_layer';
        map.addLayer(kml_layer);
        
        wms_georss = new OpenLayers.Layer.MyGeoRSS("punkt adresowy", rssLayerLink, 
        		{popupWidth: 250,
	            popupHeight: 125,
            	iconWidth: 21,
        	    iconHeight: 25,
    	        iconURL: iconLinkDir + '/marker.gif'
	        }	
        );
        wms_georss.displayInLayerSwitcher =false;
        map.addLayer(wms_georss);
        wms_georss.id = 'wms_georss';
        wms_georss.maxExtent = localMaxExtend;
        wms_georss.projection = localProjection;
        wms_georss.maxResolution = maxResolutionVal;
        
        if (isAddressExist == false) {
            alert('Nie znaleziono podanego punktu adresowego.');
        } else {
            try {
                OpenLayers.Util.getElement('ulica_street_lookup').value = OpenLayers.Util.getElement('id_ulica_street_lookup').value;
            } catch (e) {
            }
        }
    } else {
        alert(alertText);
    }
    
    for (var i = 0; i < items.length; ++i) {
        if (i == 0) {
            map.setCenter(new OpenLayers.LonLat(items[i].x, items[i].y), zoom, true, false);
            break;
        }
    }
    
    layer_switcher.updateMap();
	permalink_control.updateLink();    
    OpenLayers.Util.getElement('OpenMap').style.cursor = 'pointer';
	// cofa zoom - wymagane do poprawnego rysowania punktów trasy
    map.zoomOut();
    
    if (area == false) { //jesli ulica
        try {
            OpenLayers.Util.getElement('ajax_indicator_id_ulica_street_lookup').style.display = "";
            OpenLayers.Util.getElement('id_ulica_street_lookup').disabled = false;
            OpenLayers.Util.getElement('id_ulica_street_submit').focus();
            OpenLayers.Util.getElement('ajax_indicator_id_ulica_street_lookup').style.display = "none";
        } catch (e) {
            //when hidden field street
        }
    }
	
}

function initCemeteryMap() {
    var cemeteryBaseLayer = false;
    var args = OpenLayers.Util.getArgs();
    var mainBaseLayer = "";
    transparentImageFormat = 'image/png';
    var arVersion = navigator.appVersion.split("MSIE");
    var version = parseFloat(arVersion[1]);
    if (version >= 5.5 && version <= 6.5) {
        ieSuff = "_gif";
        imgIESuff="gif";
        transparentImageFormat = 'image/gif';
    }
    
    if (cemeteries == 'true') {
        mainBaseLayer = 'poznan_cmentarze_geopoz' + ieSuff;
    } else {
        mainBaseLayer = 'poznan_cmentarze' + ieSuff;
    }
    
    if (cemeteries == 'false' && (pageLinkPlan.contains("localhost") || pageLinkPlan.contains("mimtest"))) {
        mainBaseLayer = 'poznan_cmentarze_test' + ieSuff;
    }
    textBaseLayer = 'cmentarze';
    
    localMaxExtend2 = new OpenLayers.Bounds(13600.0, 95000.0, 37600.0, 120000.0);
	//if request is not from permalink address
	if (!args.layers) {
	    if (args.cm_id && args.cm_id == "1") {
	        map.setCenter(new OpenLayers.LonLat(31956, 109828), 4, true, false);
	    } else if (args.cm_id && args.cm_id == "2") {
			map.setCenter(new OpenLayers.LonLat(20160, 106820), 4, true, false);
	    } else if (args.cm_id && args.cm_id == "3") {
			map.setCenter(new OpenLayers.LonLat(19854, 112214), 7, true, false);
		} else if (args.cm_id && args.cm_id == "4") {
			map.setCenter(new OpenLayers.LonLat(23852, 109575), 6, true, false);
		} else if (args.cm_id && args.cm_id == "5") {
			map.setCenter(new OpenLayers.LonLat(27291, 109497), 6, true, false);
		} else if (args.cm_id && args.cm_id == "6") {
			map.setCenter(new OpenLayers.LonLat(23673, 106348), 5, true, false);
		} else if (args.cm_id && args.cm_id == "7") {
			map.setCenter(new OpenLayers.LonLat(27566, 109830), 7, true, false);
		} else if (args.cm_id && args.cm_id == "8") {
			map.setCenter(new OpenLayers.LonLat(27192, 110126), 6, true, false);
		} else if (args.cm_id && args.cm_id == "9") {
			map.setCenter(new OpenLayers.LonLat(27517, 109862), 7, true, false);
		}else if (args.cm_id && args.cm_id == "10") {
			map.setCenter(new OpenLayers.LonLat(27213, 110093), 6, true, false);
		}
	}
    if (cemeteries == 'true' || args.cm_id && (args.cm_id == "10" ||args.cm_id == "9" || args.cm_id == "8" || args.cm_id == "7" || args.cm_id == "6" || args.cm_id == "5" || args.cm_id == "4" || args.cm_id == "3" || args.cm_id == "2" || args.cm_id == "1")) {
        wms_cmentarz = new OpenLayers.Layer.WMS(textBaseLayer,
        pageLink, 
        {
            layers: mainBaseLayer, 'VERSION': "1.1.1",
            transparent: isTransparent,
            format: transparentImageFormat
        }, 
        {
            maxExtent: localMaxExtend2,
            projection: localProjection,
            maxResolution: maxResolutionVal,
            isBaseLayer: cemeteryBaseLayer,
            buffer: localBuffer,
            numZoomLevels: maxZoomLevels,
            opacity: localOpacity
        });
        wms_cmentarz.id = mainBaseLayer;
        map.addLayer(wms_cmentarz);
        wms_cmentarz.setVisibility(true);
        /* IE do wersji 7 nie obsluguje GML */
        if (isNaN(version) /*&& args.id!=2664 && args.cm_id!=3*/) {
        
            wms_gml = new OpenLayers.Layer.GML("wms_gml", 
            	pageLinkPlan + "?co=gml&cm_id=" + args.cm_id + "&id=" + args.id
            );
            
            wms_gml.maxExtent = localMaxExtend;
            wms_gml.projection = localProjection;
            wms_gml.maxResolution = maxResolutionVal;
            wms_gml.reproject = false;
            map.addLayer(wms_gml);
            
            wms_gml.id = 'wms_gml';
        }
        
        var request_params = "";
        
        if (!args.name_surname) {
            var fname;
            var sname;
            if (isNaN(version)) {
                fname = args.name;
                sname = args.surname;
            } else {
                fname = encodeUTF(args.name);
                sname = encodeUTF(args.surname);
            }
            request_params = pageLinkPlan + "?co=rss&cm_id=" + args.cm_id + "&id=" + args.id + "&name=" + fname + "&surname=" + sname;
            
        } else {
            var fsname;
            if (isNaN(version)) {
                fsname = args.name_surname;
            } else {
                fsname = encodeUTF(args.name_surname);
            }
            request_params = pageLinkPlan + "?co=rss&cm_id=" + args.cm_id + "&id=" + args.id + "&name_surname=" + fsname;
        }
        
        wms_georss = new OpenLayers.Layer.MyGeoRSS("wms_georss", 
        request_params, 
        {
            popupWidth: 275,
            popupHeight: 160,
            iconWidth: 24,
            iconHeight: 24,
            reproject: false,
            showPopup: true,
            iconURL: iconLinkDir + '/marker.gif'
        });
        showPopupNoFound: true, 
        map.addLayer(wms_georss);
        
        wms_georss.id = 'wms_georss';
        wms_georss.maxExtent = localMaxExtend;
        wms_georss.projection = localProjection;
        wms_georss.maxResolution = maxResolutionVal;
        wms_georss.reproject = false;
        
        wms_georss.setVisibility(false);
        wms_georss.setVisibility(true);
    }
}


function initMap(notPermalink){
    var wms = null;
    var args = OpenLayers.Util.getArgs();
	if(cemeteries == 'true'){
		maxZoomLevels = 12;
	}
    transparentImageFormat = 'image/png';
    var arVersion = navigator.appVersion.split("MSIE")
    var version = parseFloat(arVersion[1]);
    if (version >= 5.5 && version <= 6.5) {
        ieSuff = "_gif";
        transparentImageFormat = 'image/gif'
    }
    
    map = new OpenLayers.Map('OpenMap', {controls: []});
    OpenLayers.IMAGE_RELOAD_ATTEMPTS = 5;
    
    map.addControl(new OpenLayers.Control.Navigation());
    map.addControl(new OpenLayers.Control.PanZoom());
	
			//dodaje pasek postępu
	//map.addControl( new OpenLayers.Control.LoadingPanel());
    layer_switcher = new OpenLayers.Control.MyLayerSwitcher({div: $('layer_switcher')});
    map.addControl(layer_switcher);
    if (!notPermalink) {
        permalink_control = new OpenLayers.Control.MyPermalink({div: $('permalink')});
        map.addControl(permalink_control);
    }
    if (pageLinkPlan.contains("localhost")){
		map.addControl(new OpenLayers.Control.MousePosition());
	}
    map.numZoomLevels = maxZoomLevels;
    
    var layer_plan='plan_zdm'+ieSuff;
	if ((pageLinkPlan.contains("localhost") || pageLinkPlan.contains("mimtest"))) {
		if (ieSuff = '_gif') {
			layer_plan = 'plan_test' + ieSuff;
		}else{
			layer_plan = 'plan_test' + ieSuff + ',plan_kierunki_test' + ieSuff;
		}
	}
    
    wms_plan = new OpenLayers.Layer.WMS('Poznan', 
    pageLink, 
    {
        layers: layer_plan, 'VERSION': "1.1.1",
        format: 'image/png',
        bgcolor: "0xf0ebe7"
    }, 
    {
        maxExtent: localMaxExtend,
        projection: localProjection,
        maxResolution: maxResolutionVal,
        numZoomLevels: maxZoomLevels,
        buffer: localBuffer
    });
    wms_plan.id = 'plan';
    map.addLayer(wms_plan);
    
    mainBaseLayer = 'rower' + ieSuff;
    wms_rowery = new OpenLayers.Layer.WMS("trasy rowerowe", 
    pageLink, 
    {
        layers: mainBaseLayer, 'VERSION': "1.1.1",
        transparent: isTransparent,
        format: transparentImageFormat
    }, 
    {
        maxExtent: localMaxExtend,
        projection: localProjection,
        maxResolution: 16.0,
        isBaseLayer: false,
        reproject: false,
        buffer: localBuffer,
        opacity: localOpacity
    });
    wms_rowery.id = 'wms_rowery';
    map.addLayer(wms_rowery);
    wms_rowery.setVisibility(false);
    
    mainBaseLayer = 'budynki' + ieSuff;
    wms_budynki = new OpenLayers.Layer.WMS("budynki", 
    pageLink, 
    {
        layers: mainBaseLayer, 'VERSION': "1.1.1",
        transparent: isTransparent,
        format: transparentImageFormat
    }, 
    {
        maxExtent: localMaxExtend,
        projection: localProjection,
        maxResolution: 8.0,
        isBaseLayer: false,
        reproject: false,
        buffer: localBuffer,
        opacity: localOpacity
    });
    wms_budynki.id = 'wms_budynki';
    map.addLayer(wms_budynki);
    wms_budynki.setVisibility(false);

if ((pageLinkPlan.contains("localhost") || pageLinkPlan.contains("mimtest"))) {
	mainBaseLayer = 'plan_ewidencja' + ieSuff;
	wms_dzialki = new OpenLayers.Layer.WMS("ewidencja gruntów", pageLink, {
		layers: mainBaseLayer,
		'VERSION': "1.1.1",
		transparent: isTransparent,
		format: transparentImageFormat
	}, {
		maxExtent: localMaxExtend,
		projection: localProjection,
		maxResolution: 8.0,
		isBaseLayer: false,
		reproject: false,
		buffer: localBuffer,
		opacity: localOpacity
	});
	wms_dzialki.id = 'wms_dzialki';
	map.addLayer(wms_dzialki);
	wms_dzialki.setVisibility(false);
}
    mainBaseLayer = 'parafie' + ieSuff;
    wms_parafie = new OpenLayers.Layer.WMS("parafie", 
    pageLink, 
    {
        layers: mainBaseLayer, 'VERSION': "1.1.1",
        transparent: isTransparent,
        format: transparentImageFormat
    }, 
    {
        maxExtent: localMaxExtend,
        projection: localProjection,
        maxResolution: 16.0,
        isBaseLayer: false,
        reproject: false,
        buffer: localBuffer,
        opacity: localOpacity
    });
    wms_parafie.id = 'wms_parafie';
    map.addLayer(wms_parafie);
    wms_parafie.setVisibility(false);
    
    newl = new OpenLayers.Layer.MyGeoRSS("koscioly_parafie", pageLinkPlan + "?co=rss&service=parafie", 
    	{popupWidth: 250,
        popupHeight: 100,
        iconWidth: 25,
        iconHeight: 25,
        iconURL: iconLinkDir + '/church.gif',
        service: 'parafie'
    }
    );
    
    /*prefix niewidoczna powoduje ze wartwa nie jest wyswietlana w komponencie layer switcher
     * ustawienie id wg ciagznakow + _nazwa innej warstwy powoduje rownoczesne ukrywanie
     * lub odslanianie na planie wszystkich warstw spelniajacych powyzsze kryterium*/
    newl.id = 'niewidoczna_koscioly_wms_parafie';
    newl.setBorderStyle('solid', '4px', '#FF0F0F');
    map.addLayer(newl);
    newl.maxResolution = maxResolutionVal;
    newl.setVisibility(false);
    
	word="Wybory";
	if (args.lang == "en") {
		word="Election"
	} else if (args.lang == "de") {
		word="Wahl"
	}
	
	/*obiekt ze wsp x,y*/
	if (args.x && args.y){
		zoom=4;
		var size = new OpenLayers.Size(20,25);
		var markers = new OpenLayers.Layer.Markers( "Lokalizacja" );
		var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
		map.addLayer(markers);
		var icon = new OpenLayers.Icon(iconLinkDir + '/marker_c.gif',size,offset);
		var lonLat = new OpenLayers.LonLat(args.x,args.y);
		markers.addMarker(new OpenLayers.Marker(lonLat,icon));
		map.addLayer(markers);
		map.setCenter(lonLat, zoom, true, false);
	}
	
	/*obwody wyborcze*/
	mainBaseLayer = 'obwody_lokale_wyborcze' + ieSuff;
	var wms_obwody_wyborcze = new OpenLayers.Layer.WMS("obwody wyborcze", pageLink, {
		layers: mainBaseLayer,
		'VERSION': "1.1.1",
		transparent: isTransparent,
		format: transparentImageFormat
	}, {
		maxExtent: localMaxExtend,
		projection: localProjection,
		maxResolution: 16,
		isBaseLayer: false,
		reproject: false,
		buffer: localBuffer,
		opacity: localOpacity,
		group: word
	});
	wms_obwody_wyborcze.id = 'wms_obwody_wyborcze';
	map.addLayer(wms_obwody_wyborcze);
	wms_obwody_wyborcze.setVisibility(false);
	
	var rss_obwody_wyborcze = new OpenLayers.Layer.MyGeoRSS("obwody wyborcze środek", pageLinkPlan + "?co=rss&service=obwody_wyborcze", {
		popupWidth: 250,
		popupHeight: 100,
		iconWidth: 20,
		iconHeight: 25,
		iconURL: iconLinkDir + '/marker_c.gif',
		service: 'obwody_wyborcze'
	});
	rss_obwody_wyborcze.id = 'niewidoczna_srodek_wms_obwody_wyborcze';
	rss_obwody_wyborcze.setBorderStyle('solid', '4px', '#FF0F0F');
	map.addLayer(rss_obwody_wyborcze);
	rss_obwody_wyborcze.setVisibility(false);
	rss_obwody_wyborcze.maxResolution = maxResolutionVal;

	/* lokale wyborcze*/
	mainBaseLayer = 'lokale_wyborcze' + ieSuff;
	var wms_lokale_wyborcze = new OpenLayers.Layer.WMS("lokale wyborcze", pageLink, {
		layers: mainBaseLayer,
		'VERSION': "1.1.1",
		transparent: isTransparent,
		format: transparentImageFormat
	}, {
		maxExtent: localMaxExtend,
		projection: localProjection,
		maxResolution: 16,
		isBaseLayer: false,
		reproject: false,
		buffer: localBuffer,
		opacity: localOpacity,
		group: word
	});
	wms_lokale_wyborcze.id = 'wms_lokale_wyborcze';
	map.addLayer(wms_lokale_wyborcze);
	wms_lokale_wyborcze.setVisibility(false);
	
	var rss_lokale_wyborcze = new OpenLayers.Layer.MyGeoRSS("lokale wyborcze środek", pageLinkPlan + "?co=rss&service=lokale_wyborcze", {
		popupWidth: 250,
		popupHeight: 100,
		iconWidth: 20,
		iconHeight: 25,
		iconURL: iconLinkDir + '/marker.gif',
		service: 'lokale_wyborcze'
	});
	rss_lokale_wyborcze.id = 'niewidoczna_srodek_wms_lokale_wyborcze';
	rss_lokale_wyborcze.setBorderStyle('solid', '4px', '#FF0F0F');
	map.addLayer(rss_lokale_wyborcze);
	rss_lokale_wyborcze.setVisibility(false);
	rss_lokale_wyborcze.maxResolution = maxResolutionVal;
	
	
	if(args.obwod){	
		var rss_lokal_wyborczy = new OpenLayers.Layer.MyGeoRSS("lokal wyborczy", pageLinkPlan + "?co=rss&service=lokal_wyborczy&obwod="+args.obwod, {
			popupWidth: 250,
			popupHeight: 100,
			iconWidth: 20,
			iconHeight: 25,
			iconURL: iconLinkDir + '/marker.gif',
			service: 'lokal_wyborczy'
		},{maxExtent: localMaxExtend, zoom:4});
		
		rss_lokal_wyborczy.setBorderStyle('solid', '4px', '#FF0F0F');
		map.addLayer(rss_lokal_wyborczy);
		rss_lokal_wyborczy.setVisibility(true);
		rss_lokal_wyborczy.maxResolution = maxResolutionVal;
		
		//rss_lokal_wyborczy.redraw();

	}
	
	/*okręgi wyborcze*/
	mainBaseLayer = 'okregi_wyborcze' + ieSuff;
	var wms_okregi_wyborcze = new OpenLayers.Layer.WMS("okręgi wyborcze", pageLink, {
		layers: mainBaseLayer,
		'VERSION': "1.1.1",
		transparent: isTransparent,
		format: transparentImageFormat
	}, {
		maxExtent: localMaxExtend,
		projection: localProjection,
		maxResolution: 16,
		isBaseLayer: false,
		reproject: false,
		buffer: localBuffer,
		opacity: localOpacity,
		group: word
	});
	wms_okregi_wyborcze.id = 'wms_okregi_wyborcze';
	map.addLayer(wms_okregi_wyborcze);
	wms_okregi_wyborcze.setVisibility(false);
	
	var rss_okregi_wyborcze = new OpenLayers.Layer.MyGeoRSS("okregi wyborcze środek", pageLinkPlan + "?co=rss&service=okregi_wyborcze", {
		popupWidth: 250,
		popupHeight: 50,
		iconWidth: 20,
		iconHeight: 25,
		iconURL: iconLinkDir + '/marker_c.gif',
		service: 'okregi_wyborcze'
	});
	rss_okregi_wyborcze.id = 'niewidoczna_srodek_wms_okregi_wyborcze';
	rss_okregi_wyborcze.setBorderStyle('solid', '4px', '#FF0F0F');
	map.addLayer(rss_okregi_wyborcze);
	rss_okregi_wyborcze.setVisibility(false);
	rss_okregi_wyborcze.maxResolution = maxResolutionVal;

word="Komunikacja";
	/* biletomaty*//*
	mainBaseLayer = 'lokale_wyborcze' + ieSuff;
	var wms_biletomaty = new OpenLayers.Layer.WMS("biletomaty", pageLink, {
		layers: mainBaseLayer,
		'VERSION': "1.1.1",
		transparent: isTransparent,
		format: transparentImageFormat
	}, {
		maxExtent: localMaxExtend,
		projection: localProjection,
		maxResolution: 64,
		isBaseLayer: false,
		reproject: false,
		buffer: localBuffer,
		opacity: localOpacity,
		group: word
	});
	wms_biletomaty.id = 'wms_biletomaty';
	map.addLayer(wms_biletomaty);
	wms_biletomaty.setVisibility(false);
	
	var rss_biletomaty = new OpenLayers.Layer.MyGeoRSS("biletomaty środek", pageLinkPlan + "?co=rss&service=biletomaty", {
		popupWidth: 250,
		popupHeight: 100,
		iconWidth: 20,
		iconHeight: 25,
		iconURL: iconLinkDir + '/marker.gif',
		service: 'biletomaty'
	});
	rss_biletomaty.id = 'niewidoczna_srodek_wms_biletomaty';
	rss_biletomaty.setBorderStyle('solid', '4px', '#FF0F0F');
	map.addLayer(rss_biletomaty);
	rss_biletomaty.setVisibility(false);
	rss_biletomaty.maxResolution = maxResolutionVal;
	
		*/
	
	word="Oświata";
	if (args.lang == "en") {
		word="Education"
	} else if (args.lang == "de") {
		word="Ausbildung"
	}
	
	/*rejony szkół gimnazjalnych*/
	mainBaseLayer = 'rejony_gimnazja' + ieSuff;
	var wms_rejony_gimnazja = new OpenLayers.Layer.WMS("rejony szkół gimnazjalnych", pageLink, {
		layers: mainBaseLayer,
		'VERSION': "1.1.1",
		transparent: isTransparent,
		format: transparentImageFormat
	}, {
		maxExtent: localMaxExtend,
		projection: localProjection,
		maxResolution: 16,
		isBaseLayer: false,
		reproject: false,
		buffer: localBuffer,
		opacity: localOpacity,
		group: word
	});
	wms_rejony_gimnazja.id = 'wms_rejony_gimnazja';
	map.addLayer(wms_rejony_gimnazja);
	wms_rejony_gimnazja.setVisibility(false);
	
	var rss_rejony_gimnazja = new OpenLayers.Layer.MyGeoRSS("rejony gimnazja środek", pageLinkPlan + "?co=rss&service=rejony_gimnazja", {
		popupWidth: 250,
		popupHeight: 80,
		iconWidth: 20,
		iconHeight: 25,
		iconURL: iconLinkDir  + '/marker_c.gif',
		service: 'rejony_gimnazja'
	});
	rss_rejony_gimnazja.id = 'niewidoczna_srodek_wms_rejony_gimnazja';
	rss_rejony_gimnazja.setBorderStyle('solid', '4px', '#FF0F0F');
	map.addLayer(rss_rejony_gimnazja);
	rss_rejony_gimnazja.setVisibility(false);
	rss_rejony_gimnazja.maxResolution = maxResolutionVal;
	
	/*rejony szkół podstawowych*/
	mainBaseLayer = 'rejony_podstawowe' + ieSuff;
	var wms_rejony_podstawowe = new OpenLayers.Layer.WMS("rejony szkół podstawowych", pageLink, {
		layers: mainBaseLayer,
		'VERSION': "1.1.1",
		transparent: isTransparent,
		format: transparentImageFormat
	}, {
		maxExtent: localMaxExtend,
		projection: localProjection,
		maxResolution: 16,
		isBaseLayer: false,
		reproject: false,
		buffer: localBuffer,
		opacity: localOpacity,
		group: word
	});
	wms_rejony_podstawowe.id = 'wms_rejony_podstawowe';
	map.addLayer(wms_rejony_podstawowe);
	wms_rejony_podstawowe.setVisibility(false);
	
	var rss_rejony_podstawowe = new OpenLayers.Layer.MyGeoRSS("rejony podstawowe środek", pageLinkPlan + "?co=rss&service=rejony_podstawowe", {
		popupWidth: 250,
		popupHeight: 100,
		iconWidth: 20,
		iconHeight: 25,
		iconURL: iconLinkDir + '/marker_c.gif',
		service: 'rejony_podstawowe'
	});
	rss_rejony_podstawowe.id = 'niewidoczna_srodek_wms_rejony_podstawowe';
	rss_rejony_podstawowe.setBorderStyle('solid', '4px', '#FF0F0F');
	map.addLayer(rss_rejony_podstawowe);
	rss_rejony_podstawowe.setVisibility(false);
	rss_rejony_podstawowe.maxResolution = maxResolutionVal;
	
	/*tereny inwestycyjne*/
	if ((pageLinkPlan.contains("localhost") || pageLinkPlan.contains("mimtest"))) {
		mainBaseLayer = 'plan_tereny_inwestycyjne' + ieSuff;
		var wms_tereny_inwestycyjne = new OpenLayers.Layer.WMS("tereny inwestycyjne", pageLink, {
			layers: mainBaseLayer,
			'VERSION': "1.1.1",
			transparent: isTransparent,
			format: transparentImageFormat
		}, {
			maxExtent: localMaxExtend,
			projection: localProjection,
			maxResolution: 16,
			isBaseLayer: false,
			reproject: false,
			buffer: localBuffer,
			opacity: localOpacity
		});
		wms_tereny_inwestycyjne.id = 'wms_tereny_inwestycyjne';
		map.addLayer(wms_tereny_inwestycyjne);
		wms_tereny_inwestycyjne.setVisibility(false);
		
		var rss_tereny_inwestycyjne = new OpenLayers.Layer.MyGeoRSS("tereny inwestycyjne środek", pageLinkPlan + "?co=rss&service=tereny_inwestycyjne", {
			popupWidth: 250,
			popupHeight: 80,
			iconWidth: 20,
			iconHeight: 25,
			iconURL: iconLinkDir + '/marker_c.gif',
			service: 'tereny_inwestycyjne'
		});
		rss_tereny_inwestycyjne.id = 'niewidoczna_srodek_wms_tereny_inwestycyjne';
		rss_tereny_inwestycyjne.setBorderStyle('solid', '4px', '#FF0F0F');
		map.addLayer(rss_tereny_inwestycyjne);
		rss_tereny_inwestycyjne.setVisibility(false);
		rss_tereny_inwestycyjne.maxResolution = maxResolutionVal;
	}
	/*samorzady lokalne*/
	mainBaseLayer = 'samorzady_lokalne'+ieSuff;
	wms_samorzady = new OpenLayers.Layer.WMS("samorządy osiedlowe",
		pageLink,
		{
			layers: mainBaseLayer, 'VERSION': "1.1.1",
			transparent: isTransparent,
			format: transparentImageFormat
		},
		{
			maxExtent: localMaxExtend,
			projection: localProjection,
			maxResolution: 16,
			isBaseLayer: false,
			reproject : false,
			buffer: localBuffer,
        opacity: localOpacity
    });
    wms_samorzady.id = 'wms_samorzady';
    map.addLayer(wms_samorzady);
    wms_samorzady.setVisibility(false);
    
    newl_samorzady = new OpenLayers.Layer.MyGeoRSS("samorządy lokalne środek", pageLinkPlan + "?co=rss&service=osiedla", 
	    {popupWidth: 250,
        popupHeight: 50,
        iconWidth: 20,
        iconHeight: 25,
        iconURL: iconLinkDir + '/marker_c.gif',
        service: 'osiedla'
    }
    );
    newl_samorzady.id = 'niewidoczna_srodek_wms_samorzady';
    newl_samorzady.setBorderStyle('solid', '4px', '#FF0F0F');
    map.addLayer(newl_samorzady);
    newl_samorzady.setVisibility(false);
    newl_samorzady.maxResolution = maxResolutionVal;
    
    
    if (pageLinkPlan.contains("localhost") || pageLinkPlan.contains("mimtest")) {
        map.addControl(new OpenLayers.Control.ScaleLine());
		map.addControl(new OpenLayers.Control.Scale());
        mainBaseLayer = 'mpk' + ieSuff;
        wms_mpk = new OpenLayers.Layer.WMS("MPK", 
        pageLink, 
        {
            layers: mainBaseLayer, 'VERSION': "1.1.1",
            transparent: isTransparent,
            format: transparentImageFormat
        }, 
        {
            maxExtent: localMaxExtend,
            projection: localProjection,
            maxResolution: 4.0,
            isBaseLayer: false,
            reproject: false,
            buffer: localBuffer,
            opacity: localOpacity
        });
        wms_mpk.id = 'wms_mpk';
        map.addLayer(wms_mpk);
        wms_mpk.setVisibility(false);
 		tilecache = new OpenLayers.Layer.WMS("tilecache", 
        pageLink, 
        {
            layers: 'poznan_tiles', 'VERSION': "1.1.1",
            transparent: isTransparent,
            format: transparentImageFormat
        }, 
        {
            maxExtent: localMaxExtend,
            projection: localProjection,
            maxResolution: 200.0,
            isBaseLayer: false,
            reproject: false,
            buffer: localBuffer,
            opacity: localOpacity
        });
        tilecache.id = 'tilecache';
        map.addLayer(tilecache);
        tilecache.setVisibility(false);
    }
    wms_orto = new OpenLayers.Layer.WMS("Ortofotomapa", 
    pageLink, 
    {
        layers: 'poznan_orto', 'VERSION': "1.1.1",
        transparent: isTransparent,
        format: 'image/gif',
        bgcolor: "0xf0ebe7"
    }, 
    {
        maxExtent: localMaxExtend,
        projection: localProjection,
        maxResolution: maxResolutionVal,
        isBaseLayer: true,
        buffer: localBuffer,
        numZoomLevels: maxZoomLevels,
        opacity: localOpacity
    });
    wms_orto.id = 'wms_orto';
    map.addLayer(wms_orto);
    
    wms_hybryda = new OpenLayers.Layer.WMS("Hybryda", 
    pageLink, 
    {
		layers: 'poznan_hybryda_test', 'VERSION': "1.1.1",
        transparent: isTransparent,
        format: 'image/gif',
        bgcolor: "0xf0ebe7"
    }, 
    {
        maxExtent: localMaxExtend,
        projection: localProjection,
        maxResolution: maxResolutionVal,
        isBaseLayer: true,
        buffer: localBuffer,
        numZoomLevels: maxZoomLevels,
        opacity: localOpacity
    });
    wms_hybryda.id = 'wms_hybryda';
    map.addLayer(wms_hybryda);

    wms_hybryda_budynki = new OpenLayers.Layer.WMS("Hybryda", 
    pageLink, 
    {
		layers: 'poznan_hybryda_budynki', 'VERSION': "1.1.1",
        transparent: isTransparent,
        format: 'image/gif',
        bgcolor: "0xf0ebe7"
    }, 
    {
        maxExtent: localMaxExtend,
        projection: localProjection,
        maxResolution: maxResolutionVal,
        isBaseLayer: true,
        buffer: localBuffer,
        numZoomLevels: maxZoomLevels,
        opacity: localOpacity
    });
    wms_hybryda_budynki.id = 'wms_hybryda_budynki';
    map.addLayer(wms_hybryda_budynki);
	   
    var args = OpenLayers.Util.getArgs();
    if (args.id_klasy || args.id_obiektu) {
		if (wms_georss_obiekty != null) {
			map.removeLayer(wms_georss_obiekty);
			wms_georss_obiekty.destroy();
			wms_georss_obiekty = null;
		}
		var args_lang = 'pl';
		if (args.lang) {
			args_lang = args.lang;
		}
		var _link = pageLinkPlan + "?co=rss";
		if (args.id_obiektu) {
			_link = _link + "&id_obiektu=" + args.id_obiektu + "&lang=" + args_lang;
		}
		if (args.id_klasy) {
			_link = _link + "&id_klasy=" + args.id_klasy + "&lang=" + args_lang;
		}
		
		wms_georss_obiekty = new OpenLayers.Layer.MyGeoRSS("obiekty na planie", _link, {
			popupWidth: 250,
			popupHeight: 150,
			iconWidth: 21,
			iconHeight: 25,
			iconURL: iconLinkDir + '/marker.gif'
		});
		map.addLayer(wms_georss_obiekty);
		
		wms_georss_obiekty.id = 'wms_georss_obiekty';
		wms_georss_obiekty.maxExtent = localMaxExtend;
		wms_georss_obiekty.projection = localProjection;
		wms_georss_obiekty.maxResolution = maxResolutionVal;
		wms_georss_obiekty.reproject = false;
		
		if (map.baseLayer == wms_plan) {
			map.setBaseLayer(wms_orto, true);
			map.setBaseLayer(wms_plan, true);
		}
		
		var wkt = document.getElementById('wkt_text').value;		
		if (wkt) {
			 loadWKT();
		}
		else {
			//alert('no geometry');
		}
	}
    initCemeteryMap();
    
    if (args.lat && args.lon && args.marker) {
        addMarker(new OpenLayers.LonLat(args.lon, args.lat), false);
    }
   
    if (wkt_features) {
        map.addLayers([wkt_vectors]);
        
        wkt_vectors.maxExtent = localMaxExtend;
        wkt_vectors.projection = localProjection;
        wkt_vectors.maxResolution = maxResolutionVal;
        wkt_vectors.reproject = false;
        
        map.zoomToExtent(wkt_bounds);
    }
    
    map.events.register("move", map, OpenLayers.Map.zoomUpdate);
    map.events.register("click", map, clickUpdate);
    
    if (!map.getCenter()) map.zoomToMaxExtent();
}

function loadWKT(){
	var s = OpenLayers.Util.getElement('wkt_text');
	if (s) {
		var u;
		parseWKT(s.value,u);
	}
}

function clickUpdate(evt){
    if (wms_mpk != null && wms_mpk.visibility == true) {
        if (wms_georss_mpk != null) {
            map.removeLayer(wms_georss_mpk);
            wms_georss_mpk.destroy();
            wms_georss_mpk = null;
        }
        
        var lonLat = map.getLonLatFromPixel(evt.xy);
        var _link = pageLinkPlan + "?co=rss&service=przystanki&X=" + lonLat.lon + "&Y=" + lonLat.lat;
        
        wms_georss_mpk = new OpenLayers.Layer.MyGeoRSS("przystanki w pobliżu", 
        _link, 
        {
            popupWidth: 250,
            popupHeight: 100,
            iconWidth: 20,
            iconHeight: 25,
            service: 'wms_georss_mpk',
            showPopup: true
        }
        );
        map.addLayer(wms_georss_mpk);
        
        wms_georss_mpk.id = 'niewidoczna_wms_mpk';
        wms_georss_mpk.maxExtent = localMaxExtend;
        wms_georss_mpk.projection = localProjection;
        wms_georss_mpk.maxResolution = maxResolutionVal;
        wms_georss_mpk.reproject = false;
        
        wms_georss_mpk.inRange = true;
        layer_switcher.redraw();
        wms_georss_mpk.redraw();
    }
}

function removeMarker(){
    if (wms_marker != null) {
        map.removeLayer(wms_marker);
        wms_marker.destroy();
        wms_marker = null;
    }
    try {
        OpenLayers.Util.getElement('lon').value = "0";
        OpenLayers.Util.getElement('lat').value = "0";
    } catch (e) {}
}

function addMarker(lonlat, removeM){
    if (wms_marker != null) {
        map.removeLayer(wms_marker);
        wms_marker.destroy();
        wms_marker = null;
    }
    
    wms_marker = new OpenLayers.Layer.Markers("punkt");
    map.addLayer(wms_marker);
    
    feature = new OpenLayers.Feature(wms_marker, lonlat);
    marker = feature.createMarker();
    
    wms_marker.addMarker(marker);
    if (removeM == true) {
        marker.events.register("click", marker, removeMarker);
    }
    
    wms_marker.id = 'wms_marker';
    wms_marker.maxExtent = localMaxExtend;
    wms_marker.projection = localProjection;
    wms_marker.maxResolution = maxResolutionVal;
    
    layer_switcher.redraw();
    wms_marker.redraw();
    
    try {
        OpenLayers.Util.getElement('lon').value = lonlat.lon;
        OpenLayers.Util.getElement('lat').value = lonlat.lat;
        OpenLayers.Util.getElement('ulica_street_lookup').value = OpenLayers.Util.getElement('id_ulica_street_lookup').value;
    } catch (e) {
    }
}

function parseWKT(element, cem){
    wkt = new OpenLayers.Format.WKT();
    cemeteries = cem;
    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 = 2;
    OpenLayers.Feature.Vector.style['default'] = style_red;
    
	if(wkt){
		 var styles = new OpenLayers.StyleMap({
                "default": new OpenLayers.Style(null, {
                    rules: [
                    	new OpenLayers.Rule({
                            symbolizer: {
                                "Point": {
                                    pointRadius: 5,
                                    graphicName: "square",
                                    fillColor: "white",
                                    fillOpacity: 0.25,
                                    strokeWidth: 1.5,
                                    strokeOpacity: 1,
                                    strokeColor: "#eb0000"
                                },
                                "Line": {
                                    strokeWidth: 3,
                                    strokeOpacity: 1,
                                    strokeColor: "#eb0000"
                                },
                                "Polygon": {
                                    strokeWidth: 1,
                                    strokeOpacity: 1,
                                    fillColor: "yellow",
									fillOpacity: 0.40,
                                    strokeColor: "#eb0000"
                                }
                            }
                        })
                    ]
                })
            });
			wkt_vectors = new OpenLayers.Layer.Vector("geometria obiektu", {styleMap: styles});
	}else{
		wkt_vectors = new OpenLayers.Layer.Vector("geometria użytkownika");
	}
    
    wkt_features = wkt.read(element);
    
    if (wkt_features) {
        if (wkt_features.constructor != Array) {
            wkt_features = [wkt_features];
        }
        for (var i = 0; i < wkt_features.length; ++i) {
            if (!wkt_bounds) {
                wkt_bounds = wkt_features[i].geometry.getBounds();
            } else {
                wkt_bounds.extend(wkt_features[i].geometry.getBounds());
            }
        }
        wkt_vectors.addFeatures(wkt_features);
    } else {
        alert('Nieprawidłowy format WKT');
    }
}

function parseKML(element, cem) {
	wkt  = new OpenLayers.Format.KML();
	cemeteries=cem;
	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 = 2;
	OpenLayers.Feature.Vector.style['default'] = style_red;

	wkt_vectors = new OpenLayers.Layer.Vector("Geometria użytkownika");
	wkt_features = wkt.read(element);

	if (wkt_features) {
		if(wkt_features.constructor != Array) {
			wkt_features = [wkt_features];
		}
		for(var i=0; i <wkt_features.length; ++i) {
			
			if (!wkt_bounds) {
				wkt_bounds = wkt_features[i].geometry.getBounds();
			} else {
				wkt_bounds.extend(wkt_features[i].geometry.getBounds());
			}
		}
		wkt_vectors.addFeatures(wkt_features);
	} else {
		alert('Nieprawidłowy format KML');
	}
}

function parseGeoRSS(element, cem) {
	wkt  = new OpenLayers.Format.GeoRSS();
	cemeteries=cem;
	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 = 2;
	OpenLayers.Feature.Vector.style['default'] = style_red;

	wkt_vectors = new OpenLayers.Layer.Vector("Geometria użytkownika");
	wkt_features = wkt.read(element);

	if (wkt_features) {
		if(wkt_features.constructor != Array) {
			wkt_features = [wkt_features];
		}
		for(var i=0; i <wkt_features.length; ++i) {
			
			if (!wkt_bounds) {
				wkt_bounds = wkt_features[i].geometry.getBounds();
			} else {
				wkt_bounds.extend(wkt_features[i].geometry.getBounds());
			}
		}
		wkt_vectors.addFeatures(wkt_features);
	} else {
		alert('Nieprawidłowy format KML');
	}
}
//encode requests to UTF for IE
function encodeUTF(string){
    if (string) {
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";
        for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);
            if (c < 128 && c != 32) {
                utftext += String.fromCharCode(c);
            } else if (c == 32) {
                    utftext += '%20';
			}else if ((c > 127) && (c < 2048)) {
                        utftext += '%';
                        utftext += ((c >> 6) | 192).toString(16);
                        utftext += '%';
                        utftext += ((c & 63) | 128).toString(16);
                        
			} else {
                        utftext += '%';
                        utftext += ((c >> 12) | 224).toString(16);
                        utftext += '%';
                        utftext += (((c >> 6) & 63) | 128).toString(16);
                        utftext += '%';
                        utftext += ((c & 63) | 128).toString(16);
                    }
        }
        return utftext;
    } else {
        return string;
    }
}