		var mapa;
		var punkty = [];
		var dojazd;	
		var lokacja;
		var skad;
		var dokad;
		var skad_string;
		var dokad_string;
		var problem;
		var skadonlyone;
		var dokadonlyone;
		var encodedPolyline;
				
		function doInputa(nazwa, gdzie) 
		{
				$("#trasa #"+gdzie).attr("value",nazwa);	
				$("#lista_"+gdzie).html(" ").css("display","none");
				    skad = $("#trasa #start").attr("value");
					dokad = $("#trasa #stop").attr("value");
					dojazd.load('from:'+skad+' to:'+dokad,{"locale":langs});		
		}
		
		function errorMsg(blad)
		{
			switch(blad)
			{
				case G_GEO_MISSING_QUERY:
				case G_GEO_MISSING_ADDRESS: var tekst = 'Nie podano adresu!'; break;
				case G_GEO_UNAVAILABLE_ADDRESS:
				case G_GEO_BAD_REQUEST:
				case G_GEO_SERVER_ERROR: var tekst = 'Błąd serwera!'; break;
				case G_GEO_UNKNOWN_ADDRESS: var tekst = 'Nie udało się geokodować adresu'; break;
				case G_GEO_TOO_MANY_QUERIES: var tekst = 'Przekroczono limit zapytań do strony Google'; break;
				default: var tekst = 'Nie udało się znaleźć przejazdu pomiędzy podanymi punktami';
			}
			
			return tekst;
		}

		function dodajMarker(lat,lon,ikona_url,nazwa,opis,kategoria)
		{
			var ikona = new GIcon();
			ikona.image = ikona_url;
			ikona.iconSize = new GSize(18, 18);
			ikona.iconAnchor = new GPoint(9, 9);
			ikona.shadow = "";
			ikona.infoWindowAnchor = new GPoint(8,8);
			var marker	=	new GMarker(new GLatLng(lat,lon),{title: nazwa, icon: ikona});
			marker.txt	=	"<h2 class='mapaDymek' id='"+kategoria+"r'>"+nazwa+"</h2><div class='mapaDymekDiv'>"+opis+"</div>";
			marker.kategoria = kategoria;
			punkty.push(marker);
			mapa.addOverlay(marker);
				if(kategoria!="wezly" && kategoria!="place" && kategoria!="stacje" && kategoria!="obsluga")
				{
						marker.hide();
				}
			GEvent.addListener(marker,"click",function()
			{
				marker.openInfoWindowHtml(marker.txt);
			});
			return marker;
		}
		function load()
		{
			if(GBrowserIsCompatible())  
			{
				
				mapa = new GMap2(document.getElementById("mapa"));
								
				var pointsE = "{lieIu`spBfPedA~s@m}Afg@qbAp_A}x@fw@cm@r{McqDtrJ{rBdcCyeAj{AcyAd_AiCx]vIbVrV|k@lc@|fAuIp`AoTxjA}L`eDjDliAia@z~@yYphBzKdcD~y@x~C`l@rcCqUftAgQ";
				var levelsE = "BBBBBBBBBBBBBBBBBBBBBBBBB";
				
				encodedPolyline = new GPolyline.fromEncoded({
			    color: "#D70000",
			    weight: 5,
			    points: pointsE,
			    levels: levelsE,
			    zoomFactor: 32,
			    numLevels: 4
				});
				
				mapa.addOverlay(encodedPolyline);
				
				
				
				dojazd = new GDirections(mapa, document.getElementById("showRoad")); 
				var identNumber = 0;
				GEvent.addListener(dojazd, "error", function()
				{
					problem = errorMsg(dojazd.getStatus().code);
					if (dojazd.getStatus().code == "604")
						alert(wideaddress);
				
					if (dojazd.getStatus().code == "602")
					{
						
						lokacja = new GClientGeocoder();
						lokacja.setBaseCountryCode("PL");
						lokacja.getLocations(skad, function (wynik)
				        { 
				            if (wynik.Status.code == G_GEO_SUCCESS) {
				              if (wynik.Placemark.length > 1) {
									skad_string = '';
				              		 for (var i=0; i<wynik.Placemark.length; i++) {			              		     
				              		     try {
				              		        powiaty = ','+wynik.Placemark[i].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName; 
				              		     }
				              		     catch(err) {
				              		        powiaty = ''; 
				              		     }				              		    
				              		     try {
				              		        kraje = ','+wynik.Placemark[i].AddressDetails.Country.CountryName;
				              		     }
				              		     catch(err) {
				              		         kraje = '';
				              		     }				              		     				              		 
				              		     try {
				              		        wojewodztwa = ','+wynik.Placemark[i].AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
				              		     }
				              		     catch(err) {
				              		        wojewodztwa = '';
				              		     }
				              		       				              		   				              		       
				              		     fullyAddress = wynik.name+powiaty+wojewodztwa+kraje;
				              		     fullyAddressShow = wynik.name+wojewodztwa+kraje;   				              		           
			                             skad_string += 
			                             '<a href="javascript:doInputa(\''+fullyAddress+'\', \'start\')" id="skad'+i+'">'+fullyAddressShow+'</a>';
						             }
				              	  	$("#lista_start").css("display","block").html(skad_string);
				              }
				              else if (wynik.Placemark.length == 1 && identNumber < 2)
				              {
				              	 identNumber++;
				              	 skadonlyone = wynik.Placemark[0].AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
				              }
				            }
				             else {
			             		 alert(wideaddressskad);
             			 }
				         });	
				        				         		         
				         lokacja.getLocations(dokad, function (wynik)
				         {
				            if (wynik.Status.code == G_GEO_SUCCESS)
				            {
				              if (wynik.Placemark.length > 1) { 
									 dokad_string = '';
				              		 for (var i=0; i<wynik.Placemark.length; i++) {
				              		     try {
				              		        powiaty = ','+wynik.Placemark[i].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName; 
				              		     }
				              		     catch(err) {
				              		        powiaty = ''; 
				              		     }				              		     
				              		     try {
				              		        kraje = ','+wynik.Placemark[i].AddressDetails.Country.CountryName;
				              		     }
				              		     catch(err) {
				              		         kraje = '';
				              		     }		              		     			              		 
				              		     try {
				              		        wojewodztwa = ','+wynik.Placemark[i].AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
				              		     }
				              		     catch(err) {
				              		        wojewodztwa = '';
				              		     }				              		       				              		   		              		       
				              		     fullyAddress = wynik.name+powiaty+wojewodztwa+kraje;
				              		     fullyAddressShow = wynik.name+wojewodztwa+kraje; 			              		     				              		     		              		   
						                dokad_string += '<a href="javascript:doInputa(\''+fullyAddress+'\', \'stop\')" id="skad'+i+'">'+fullyAddressShow+'</a>';
						             }
						             $("#lista_stop").css("display","block").html(dokad_string);
				              }
				              else if (wynik.Placemark.length == 1 && identNumber < 2)
				              {
				              	 identNumber++;
				              	 dokadonlyone = wynik.Placemark[0].AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
				              }
				            }
				            else {
			             		 alert(wideaddressdokad);
             			 }
				         });
				         
							setTimeout(function (){	
				        if (identNumber > 0)
				         {
				         	identNumber = 0;
				         	dojazd.load('from:'+skad+','+skadonlyone+' to:'+dokad+','+dokadonlyone,{"locale":langs});
				         	return false;
				         }
						},300);
						
  						return true;
					}
				});
			    mapa.setCenter(new GLatLng(54.06615813466651, 18.6328125), 9);
				mapa.setMapType(G_NORMAL_MAP);
				// kontrolki mapy
				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 GScaleControl());			

				                mapa.enableScrollWheelZoom();
                
				var filer = base_url + 'xml/punkty_'+lanGG+'.xml';
				
				GDownloadUrl(filer, 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("lat"));
							var lon			=	parseFloat(markery[i].getAttribute("lon"));
							var ikona_url	=	base_url+"images/planner_icons/"+markery[i].getAttribute("kategoria")+".gif";
							var opis		=	markery[i].getAttribute("opis");
							var nazwa		=	markery[i].getAttribute("nazwa");
							var kategoria	=	markery[i].getAttribute("kategoria");
							var marker		=	dodajMarker(lat,lon,ikona_url,nazwa,opis,kategoria);
						}
					}
					else
					{
						alert('Nie mogłem otworzyć pliku punkty.xml');
					}
				});
			}
		}
    

    	function changeVisibility(kategoria,pokaz)
		{
			for(var i=0; i<punkty.length; i++)
			{
				if(punkty[i].kategoria==kategoria)
				{
					if(pokaz==true)
						punkty[i].show();
					else
						punkty[i].hide();
				}
			}
		}


		$(document).ready(function() {

				$("#showR").click(function()
				{	
					skad = $("#trasa #start").attr("value");
					dokad = $("#trasa #stop").attr("value");

					dojazd.load('from:'+skad+' to:'+dokad,{"locale":langs}); 
					return false;
				});


				$("#cleanR").click(function(){		
					 dojazd.clear(); 
					 return false;
				});				

 $("#legenda-m ul li a").click(function(){
			 		
			 		kategoria = $(this).attr("rel");
			 				 		
			 		if ($(this).attr("class"))
			 		{
			 			$(this).css("background", "url(images/planner_icons/"+kategoria+"_off.gif) left 4px no-repeat");
					 	$(this).removeClass();
			 			if (kategoria == "polyline")
			 			{
			 				encodedPolyline.hide();
			 			}
			 			else
			 			{
					 		changeVisibility(kategoria,false);
			 			}
			 			return false;
			 		}
			 		else 
			 		{	
			 			$(this).addClass("showN");
			 			$(this).css("background", "url(images/planner_icons/"+kategoria+".gif) left 4px no-repeat");	
			 			if (kategoria == "polyline")
			 			{
			 				encodedPolyline.show();
			 			}
			 			else
			 			{	 
			 			changeVisibility(kategoria,true);
			 			}	
			 			return false;
			 		}

			 	});

					$(window).ready(function () { 
					    load();
					}).unload(function () {
					    GUnload();
					});

		});