	
	var mapa;
	var mmgr = false;
	var ograniczenieObszar = new GLatLngBounds();
	var ograniczenieZoom = [11,17];
	
	/*
	ograniczenieObszar.extend(new GLatLng(49.98699361915002,18.343048095703125));
	ograniczenieObszar.extend(new GLatLng(50.2063516930489,18.738555908203125));
	*/
	
	
	ograniczenieObszar.extend(new GLatLng(50.04258876970728,18.452911376953125));
	ograniczenieObszar.extend(new GLatLng(50.14962639292665,18.644485473632812));
	
	/*
	ograniczenieObszar.extend(new GLatLng(50.096467833262544,18.542261123657227));
	ograniczenieObszar.extend(new GLatLng(50.096467833262544,18.542261123657227));
	*/
	
	function sprawdz()
	{
		if(!ograniczenieObszar.contains(mapa.getCenter()))
		{
			var lat = mapa.getCenter().lat();
			var lng = mapa.getCenter().lng();
			
			var minlat = ograniczenieObszar.getSouthWest().lat();
			var maxlat = ograniczenieObszar.getNorthEast().lat();
			var minlng = ograniczenieObszar.getSouthWest().lng();
			var maxlng = ograniczenieObszar.getNorthEast().lng();
			
			if(lat > maxlat)
				lat = maxlat;
			else if(lat < minlat)
				lat = minlat;
				
			if(lng > maxlng)
				lng = maxlng;
			else if(lng < minlng)
				lng = minlng;
			
			mapa.setCenter(new GLatLng(lat,lng));
		}
	}
	
		
	function dodajMarker(lat,lon,ikona_url,ikona_shadow,nazwa, zoom_min, zoom_max)
	{
	
		var ikona = new GIcon();
		ikona.image = ikona_url;
		// ikona.image = "http://maps.google.com/mapfiles/kml/pal2/icon13.png";
		ikona.iconSize = new GSize(32, 32);
		ikona.iconAnchor = new GPoint(15, 12);
		ikona.shadow = ikona_shadow;
		// ikona.shadow = "http://maps.google.com/mapfiles/kml/pal2/icon13s.png";
		ikona.infoWindowAnchor = new GPoint(15,12);
		
		var marker	=	new GMarker(new GLatLng(lat,lon),{title: nazwa, icon: ikona});
		// marker.txt	=	'Wybrane państwo:<br /><strong>'+nazwa+'</strong>';
		// markery.push(marker);
		// mapa.addOverlay(marker);
		
		// dodajemy pojedynczy marker w przedziale zoom minZoom - maxZoom
		mmgr.addMarker(marker,zoom_min,zoom_max);
	
		
		/*
		GEvent.addListener(marker,"click",function()
		{
			marker.openInfoWindowHtml(marker.txt);
		});
		*/
		
		return marker;
	}
	
	function startMap(category_id) {
	  
	  	if (GBrowserIsCompatible()) {
	    	
	    	mapa = new GMap2(document.getElementById("mapa"));
	    
	    	mapa.setCenter(new GLatLng(50.096467833262544, 18.542261123657227),13); 
	    	
	    	// dodanie kontrolek
			mapa.addControl(new GLargeMapControl());
			// var typyMapy = mapa.getMapTypes();    
			// typyMapy[0].getName= function() { return "Mapa";}
			// typyMapy[1].getName = function() { return "Satelita";}
			// typyMapy[2].getName = function() { return "Hybryda";}
			// mapa.addControl(new GMapTypeControl());
			mapa.addControl(new GOverviewMapControl()); 
			mapa.addControl(new GScaleControl());
			
			// nowy menedżer markerów
			mmgr =  new MarkerManager(mapa,{maxZoom: 19});
			
    		var mapy = mapa.getMapTypes();
			for (var i=0; i<mapy.length; i++)
			{
				mapy[i].getMinimumResolution = function() {return ograniczenieZoom[0];}
				mapy[i].getMaximumResolution = function() {return ograniczenieZoom[1];}
			}
			// GEvent.addListener(mapa,'move',sprawdz);
		
	  	
	  		GEvent.addListener(mapa,'click',function(marker,point) {
				if(marker)
				{
					// mapa.removeOverlay(marker);
					showLocation(marker.getPoint());
					// alert(marker.getTitle());
				}
				else
				{	
					var marker = new GMarker(point, {title: 'Pierwszy marker'});
					mapa.addOverlay(marker);
					addLocation(marker.getPoint()); 
				}
			});
			
			// jeżlei została podana kategoria, to od razu pokazujemy ją na mapie
			if (category_id) {
				
				loadLocations (category_id);
			}
	  	}
	}
	
	function newLocation (coordinates) {
		
		// var form_coordinates = document.getElementById('form_coordinates');
		
		// form_coordinates.value = coordinates.lat() + ',' + coordinates.lng();
		
		addLocation(coordinates.lat() + ',' + coordinates.lng());
	}
	
	function showLocation (coordinates) {
		
		if (coordinates) {
			
			var marker = coordinates.lat() + ',' + coordinates.lng();
			
			document.mochaUI.newWindow({
				id: 'showLocation',
				title: 'Lokalizacja',
				loadMethod: 'iframe',
				contentURL: 'location.php?action=GetLocation&coordinates=' + marker,
				width: 570,
				height: 470,
				scrollbars: false,
				// paddingVertical: 5,
				// paddingHorizontal: 5,
				modal: true
			});
		}
	}
	
	function loadLocations (category_id) {
		
		if (category_id) {
		
			// czyścimy widoczne do tej pory ikony
			mmgr.clearMarkers();
			
			GDownloadUrl('location.php?action=GetLocations&CategoryId=' + category_id, function(dane,kodOdpowiedzi) {
				
				if(kodOdpowiedzi==200) {
				
					var xml = GXml.parse(dane);
					var markery = xml.documentElement.getElementsByTagName("marker");
					for(var i=0; i<markery.length; i++)
					{
						var lat				=	parseFloat(markery[i].getAttribute("latitude"));
						var lon				=	parseFloat(markery[i].getAttribute("longitude"));
						var ikona_url		=	markery[i].getAttribute("ikona");
						var ikona_shadow	=	markery[i].getAttribute("ikona_shadow");
						var nazwa			=	markery[i].getAttribute("nazwa");
						var zoom_min		=	markery[i].getAttribute("zoom_min");
						var zoom_max		=	markery[i].getAttribute("zoom_max");
						var marker			=	dodajMarker(lat,lon,ikona_url,ikona_shadow,nazwa,zoom_min,zoom_max);
					}
					// alert('Wczytano '+markery.length+' markerów z pliku dane.php');
					
					// zapisujemy w kodzie id wybranej kategorii
					document.getElementById('category_id').value = category_id;
				}
				else
				{
					alert('Nie mogłem otworzyć pliku z danymi lokalizacji');
				}
			});
		}
	}
	
	function addLocation (coordinates) {
		
		if (coordinates) {
		
			var category_id = document.getElementById('category_id').value;
			
			// sprawdzamy czy współrzędne mieszczą się w naszym obszarze
			
			var latitude = coordinates.lat();
			var longitude = coordinates.lng();
			var error = 0;
			
			if (latitude < 49.98699361915002 || latitude > 50.2063516930489) {
				error = 1;
			}
			
			if (longitude < 18.343048095703125 || longitude > 18.738555908203125) {
				error = 1;
			}
			
			/*
			ograniczenieObszar.extend(new GLatLng(49.98699361915002,18.343048095703125));
			ograniczenieObszar.extend(new GLatLng(50.2063516930489,18.738555908203125));
			*/
			
			if (error) {
		
				alert('Kliknąłeś obszar poza ustalonymi granicami. Spróbuj ponownie!');
			}
			else {
			
				var marker = coordinates.lat() + ',' + coordinates.lng();
				
				document.mochaUI.newWindow({
					id: 'newLocation',
					title: 'Nowa lokalizacja',
					loadMethod: 'iframe',
					// contentURL: 'location.php?action=NewLocation',
					contentURL: 'location.php?action=NewLocation&coordinates=' + marker + '&CategoryId=' + category_id,
					width: 570,
					height: 470,
					scrollbars: false,
					// paddingVertical: 5,
					// paddingHorizontal: 5,
					modal: true
				});
			}
		}
	}
	
	function showHelp (help_id) {
		
		if (help_id) {
		
			document.mochaUI.newWindow({
				id: 'showHelp',
				title: 'Pomoc',
				loadMethod: 'iframe',
				contentURL: 'about.php?ArticleId=' + help_id,
				width: 570,
				height: 470,
				scrollbars: false
				// paddingVertical: 5,
				// paddingHorizontal: 5,
				// modal: true,
			});
		}
	}
	
	
