var map;
var maxZOOMLEVEL = 21;

		
/************* click events ************/

/*	OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {                
                defaultHandlerOptions: {
                    'single': true,
                    'double': false,
                    'pixelTolerance': 0,
                    'stopSingle': false,
                    'stopDouble': false
                },

                initialize: function(options) {
                    this.handlerOptions = OpenLayers.Util.extend(
                        {}, this.defaultHandlerOptions
                    );
                    OpenLayers.Control.prototype.initialize.apply(
                        this, arguments
                    ); 
                    this.handler = new OpenLayers.Handler.Click(
                        this, {
                            'click': this.trigger
                        }, this.handlerOptions
                    );
                }, 

                trigger: function(e) {
                    var lonlat = map.getLonLatFromViewPortPx(e.xy);
                    alert("You clicked near " + lonlat.lat + " N, " +
                                              + lonlat.lon + " E");
                }

            });
*/			
			
function init(){

	var options = {
	projection: new OpenLayers.Projection("EPSG:900913"),
	displayProjection: new OpenLayers.Projection("EPSG:4326"),
	units: "m",
	maxResolution: 156543.0339,
	/*numZoomLevels: maxZOOMLEVEL+1,*/
	maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34,20037508.34, 20037508.34),
	controls: []
	};

	map = new OpenLayers.Map('map',options);
	var google_streets 	= new OpenLayers.Layer.Google("Google Ulice", {"sphericalMercator": true,MAX_ZOOM_LEVEL :maxZOOMLEVEL,numZoomLevels: maxZOOMLEVEL+1}	);
	var google_satelite = new OpenLayers.Layer.Google( "Google Fotomapa",{type: G_SATELLITE_MAP,"sphericalMercator": true,numZoomLevels: 19});
	var topo = new OpenLayers.Layer.WMS( "Mapa topograficzna WODGIK","http://mapakrakow.pl/cgi-bin/tilecache-2.10/tilecache.cgi?", 
	{layers: 'topo', format: 'image/png',projection: "EPSG:900913" },{'buffer':0,MAX_ZOOM_LEVEL :maxZOOMLEVEL-2,numZoomLevels: maxZOOMLEVEL-1} );
	
	
	var komunikacja_tilecache = new OpenLayers.Layer.WMS("Komunikacja MPK","http://mapakrakow.pl/cgi-bin/tilecache-2.10/tilecache.cgi?",
	{layers: 'komunikacja',projection: "EPSG:900913",'reproject': false,transparent: 'TRUE'},{'reproject': false,'buffer':0});


	var osm_arender = new OpenLayers.Layer.OSM("OpenStreetMap (Tiles@Home)","http://tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png",{MAX_ZOOM_LEVEL :17,numZoomLevels: 18});
	function osm_getTileURL(bounds) {
		var res = this.map.getResolution();
		var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
		var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
		var z = this.map.getZoom();
		var limit = Math.pow(2, z);

		if (y < 0 || y >= limit) {
		return OpenLayers.Util.getImagesLocation() + "404.png";
		} else {
		x = ((x % limit) + limit) % limit;
		return this.url + z + "/" + x + "/" + y + "." + this.type;
		}
	}

	var mapnik = new OpenLayers.Layer.TMS("OpenStreetMap (Mapnik)","http://tile.openstreetmap.org/",
	{type: 'png', getURL: osm_getTileURL,displayOutsideMaxExtent: true,attribution: '<a href="http://www.openstreetmap.org/">OpenStreetMap</a>',MAX_ZOOM_LEVEL :18,numZoomLevels: 19});
	/*Mapa rowerowa OSM:*/
	/*var cyclemap = new OpenLayers.Layer.OSM.CycleMap(i18n("javascripts.map.base.cycle_map"), {
      displayOutsideMaxExtent: true,
      wrapDateLine: true
   });
   map.addLayer(cyclemap);
*/
   
	var administracja = new OpenLayers.Layer.WMS("Granice administracyjne","http://mapakrakow.pl/cgi-bin/tilecache-2.10/tilecache.cgi?",
	{layers: 'administracja',projection: "EPSG:900913",transparent: 'TRUE',format: 'image/gif'},{'reproject': false,'buffer':0});

	var pogrzeb_prezydenta_rp_wms = new OpenLayers.Layer.WMS( "Pogrzeb Prezydenta RP + mapa","http://mapakrakow.pl/cgi-bin/wms?", 
	{layers: 'pogrzeb_prezydenta_rp', format: 'image/png',projection: "EPSG:900913",transparent: 'TRUE' },{gutter:50,isBaseLayer:false,'buffer':0,MAX_ZOOM_LEVEL :maxZOOMLEVEL-2,numZoomLevels: maxZOOMLEVEL-1} );
	
	
	var pogrzeb_prezydenta_rp = new OpenLayers.Layer.WMS( "Pogrzeb Prezydenta RP + mapa","http://mapakrakow.pl/cgi-bin/tilecache-2.10/tilecache.cgi?", 
	{layers: 'pogrzeb_prezydenta_rp', format: 'image/png',projection: "EPSG:900913",transparent: 'TRUE' },{isBaseLayer:false,'buffer':0,MAX_ZOOM_LEVEL :maxZOOMLEVEL-2,numZoomLevels: maxZOOMLEVEL-1} );
	pogrzeb_prezydenta_rp.setOpacity(0.8)
/*markier tu jestem - pokazuje się ok */
	
	markers = new OpenLayers.Layer.Markers( "Markers",{'displayInLayerSwitcher':false});
	    map.addLayer(markers);
		
		var size = new OpenLayers.Size(30,30);
	    var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
	    var icon = new OpenLayers.Icon('images/cliparts/arrow/arrow_down.png',size,offset);
	    marker_wskaznik = new OpenLayers.Marker(new OpenLayers.Layer.SphericalMercator.forwardMercator(19.937,50.06),icon);
		//marker_wskaznik.setOpacity(0.9);
		marker_wskaznik.events.register('mousedown', marker_wskaznik, 	function(evt) { 	alert('szkoda że nie działa w Mozilli'+this.icon.url); 		OpenLayers.Event.stop(evt); 	});//z jakichś powodów nie dizała
		//markers.addMarker(marker_wskaznik); 
		
		var sizea = new OpenLayers.Size(30,30);
	    var offseta = new OpenLayers.Pixel(-(sizea.w/2), -sizea.h);
	    var icona = new OpenLayers.Icon('images/cliparts/arrow/arrow_down.png',sizea,offseta);
	    marker_tujestem = new OpenLayers.Marker(new OpenLayers.Layer.SphericalMercator.forwardMercator(19.937,50.06),icona);
		marker_tujestem.setOpacity(0.8);
		marker_tujestem.events.register('mousedown', marker_tujestem, 	function(evt) { 	alert('szkoda że nie działa w Mozilli'+this.icon.url); 		OpenLayers.Event.stop(evt); 	});//z jakichś powodów nie dizała
		//markers.addMarker(marker_tujestem); 
	
	var styleaaa = new OpenLayers.Style({
		externalGraphic: "http://www.openlayers.org/api/img/zoom-world-mini.png", //http://openlayers.org/dev/img/marker.png
		graphicWidth:10
	});

	var myStyles = new OpenLayers.StyleMap({
		"default": new OpenLayers.Style({
			externalGraphic: "images/cliparts/przystanki/bus_tram.gif",
			graphicWidth:20,
			cursor:'pointer'
		}),
		"select": new OpenLayers.Style({
			//externalGraphic: "images/cliparts/przystanki/bus_tram.gif",
			graphicWidth:25,
			cursor:'pointer'
		})
	});

	var lookup = {
		"a": {externalGraphic: "images/cliparts/przystanki/bus.png"},
		"aa": {externalGraphic: "images/cliparts/przystanki/bus.png"},
		"t": {externalGraphic: "images/cliparts/przystanki/tramway.gif"},
		"tt": {externalGraphic: "images/cliparts/przystanki/tramway.gif"},
		"ta": {externalGraphic: "images/cliparts/przystanki/bus_tram.gif"}
	};/*musze dodac ; bo sie sypie*/

	myStyles.addUniqueValueRules("default", "a_t", lookup);



	/*  strategies: [new OpenLayers.Strategy.BBOX({resFactor: 1.1})],*/
	var przystanki_g = new OpenLayers.Layer.Vector("Przystanki MPK", {
		styleMap: myStyles, 
		strategies: [new OpenLayers.Strategy.BBOX({ratio: 1.1})], /*ratio: 1.1 w przykłądzie jest resFactor: 1.1 ale nie wiem co to znaczy, ratio: musi byc większeniż 1 bo inaczej dymki nie działajją - zamykanie dymka */
		/*OpenLayers. Strategy. Refresh*/
		protocol: new OpenLayers.Protocol.HTTP({
			url: "textlayer_generator/przystanki_group.php",
			format: new OpenLayers.Format.Text({
				extractStyles:false
			})

		}),
		maxResolution: 20,
		minResolution: 5
	});
	
	var przystanki_pointy = new OpenLayers.Layer.Vector("Przystanki - punkty", {
		styleMap: myStyles,
		strategies: [new OpenLayers.Strategy.BBOX({ratio: 1.1})], 

		protocol: new OpenLayers.Protocol.HTTP({
			url: "textlayer_generator/przystanki_wszystkie.php",
			format: new OpenLayers.Format.Text({
				extractStyles:false
			})

		}),
		maxResolution: 5
	});

	topo.setVisibility(true);
	topo.setVisibility(false);
	przystanki_pointy.setVisibility(true);
	przystanki_g.setVisibility(true);
	administracja.setVisibility(false);
	pogrzeb_prezydenta_rp.setVisibility(false);
	komunikacja_tilecache.setVisibility(false);
	/*google_satelite.setVisibility(false); powoduje error a także wyświetlanie się permalink zdulowanych*/
	map.addLayers([mapnik,google_streets,google_satelite,topo,osm_arender,przystanki_g,przystanki_pointy,administracja,pogrzeb_prezydenta_rp,komunikacja_tilecache]);
	map.setCenter( OpenLayers.Layer.SphericalMercator.forwardMercator(19.937,50.06), 15 );
	/*map.setCenter( new OpenLayers.LonLat(553700,232804), 15 ); //to zadziła z 4326*/

	var lay_sw_ctl = new OpenLayers.Control.LayerSwitcher();
	map.addControl(lay_sw_ctl); lay_sw_ctl.maximizeControl();
	map.addControl( new OpenLayers.Control.MousePosition() );
	map.addControl(new OpenLayers.Control.PanZoomBar({position: new OpenLayers.Pixel(2, 15)   }));
	map.addControl(new OpenLayers.Control.Navigation());

	selectControl = new OpenLayers.Control.SelectFeature(
	new Array(przystanki_g,przystanki_pointy)
	);

	map.addControl(selectControl);
	selectControl.activate();
	przystanki_g.events.on({
	'featureselected': onFeatureSelect,
	'featureunselected': onFeatureUnselect
	});
	przystanki_pointy.events.on({
	'featureselected': onFeatureSelect,
	'featureunselected': onFeatureUnselect
	});
	
	/*żeby clik on map działało to musi być to dodane*/
	/*var click = new OpenLayers.Control.Click();
                map.addControl(click);
                click.activate();
	*/
}

function show_window(idmpk) {

switch (String(idmpk).length) {
case 1:
idmpk='000'+String(idmpk);
break;
case 2:
idmpk='00'+String(idmpk);
break;
case 3:
idmpk='0'+String(idmpk);
break;
case 4:
idmpk=String(idmpk);
break;
default:
alert("Błędny nr mpk id");
break;
}

var www = "http://rozklady.mpk.krakow.pl/aktualne/p/p"+idmpk+".htm";
var asa = window.open(www,'adsf','height=500,width=600,resizable=yes,scrollbars=yes,menubar=no,status=no,toolbar=no');
asa.focus();
return false;
}

function getMPKurl(idmpk) {
	if (lang=='pl') var slowo = 'Rozkład jazdy'; else var slowo = 'Time table';
	var link = "<a href='javascript:void(null);' onclick=\"show_window('"+idmpk+"');return false\">"+slowo+"</a>";
	return link;
}

function opis_dymka(a_t) {
	var temp_desc = '';
	
	var img_bus = "images/cliparts/przystanki/bus.png";
	var img_tram = "images/cliparts/przystanki/tramway.gif";
	var img_bus_tram = "images/cliparts/przystanki/bus_tram.gif";
	var imgg = img_bus_tram;
	switch (a_t) {
		case 'a':
			if (lang=='pl') temp_desc =  "Przystanek autobusowy"; else temp_desc =  "Bus stop";
			imgg = img_bus;
		break;
		case 'aa':
			if (lang=='pl') temp_desc =  "Przystanek autobusowy"; else temp_desc =  "Bus stop";
			imgg = img_bus;
		break;
		case 't':
			if (lang=='pl') temp_desc =  "Przystanek tramwajowy"; else temp_desc =  "Tram stop";
			imgg = img_tram;
		break;
		case 'tt':
			if (lang=='pl') temp_desc =  "Przystanek tramwajowy"; else temp_desc =  "Tram stop";
			imgg = img_tram;
		break;
		case 'ta':
			if (lang=='pl') temp_desc =  "Przystanek autobusowy i tramwajowy"; else temp_desc =  "Bus/Tram stop";
		break;
		default:
			temp_desc =  "Typ przystanku niezdefiniowany w bazie";
		break;
	}

	return "<IMG SRC='"+imgg+"' alt='ikonka przystanku'> "+temp_desc;
}

function onPopupClose(evt) {
	map.removePopup(popup);
	popup.destroy();
	popup = null;

}
var popup;
function onFeatureSelect(evt) {
	if (popup) {

	map.removePopup(popup);

	}

	feature = evt.feature;

	popup = new OpenLayers.Popup.FramedCloud("featurePopup",
	feature.geometry.getBounds().getCenterLonLat(),
	new OpenLayers.Size(100,100),
	"<h2>"+feature.attributes.title + "</h2>" +
	/*feature.attributes.description+"<br>"+   */
	opis_dymka(feature.attributes.a_t)+'<br>'+
	getMPKurl(feature.attributes.idmpk),
	null,true, onPopupClose);
	map.addPopup(popup);
}
function onFeatureUnselect(evt) {

if (popup) {

map.removePopup(popup);
popup.destroy(); /* popup.toggle(); - to jest przeciwieństwo */
popup = null;

}
}

