	var side_bar_html = "";
	var gmarkers = [];
	var htmls = [];
	var i = 0;
	var to_htmls = [];
	var from_htmls = [];
	
	var markery = [];
	var	map ;
	var gdir ;

	
function createMarker(point, number , icon, categories) 
{  
	var marker = new GMarker(point,icon);  
	
	// The info window version with the "to here" form open
	to_htmls[i] = number + '<a href="javascript:fromhere(' + i + ')"><b>Dojazd</b></a>' +
	'<br>Start adres:<form action="javascript:getDirections()">' +
	'<input type="text" SIZE=40 MAXLENGTH=40 name="saddr" id="saddr" value=""/><br>' +
	'<INPUT value="Szukaj" TYPE="SUBMIT"><br>' +
	'Unikaj autostrad <input type="checkbox" name="highways" id="highways"  style="border:1; margin-top:2px; width:20px;"/>' +
	'<input type="hidden" name="walk" id="walk" />' +
	'<input type="hidden" id="daddr" value="'+name+"@"+ point.lat() + ',' + point.lng() + 
	'"/>';
	
	number = number + '<a href="javascript:tohere('+i+')"><b>Dojazd</b></a>';

	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(number);
	});
	// save the info we need to use later for the side_bar
	gmarkers[i] = marker;
	htmls[i] = number;
	// add a line to the side_bar html
	//side_bar_html += '<a href="javascript:myclick(' + i + ')">' + name + '</a><br>';
	i++;

	marker.categories = categories ;
	markery.push(marker);  
	 
	return marker;

}


function create_map (lat, lng, zoom)
{
	
	if ((lat==0) & (lng==0) & (zoom==0)){
		alert ('Error: bledny identyfikator miasta');
		return false;
	}
	else{
	    map = new GMap2(document.getElementById("map"),
			{ 
				 draggableCursor:"move",
			     draggingCursor:"crosshair"
			} 
		);  
		
		gdir=new GDirections(map, document.getElementById("directions"));	
		
		map.enableScrollWheelZoom(); 	
		map.addControl(new GLargeMapControl());
		map.addControl(new GScaleControl());
		map.addControl(new GOverviewMapControl());
		map.setCenter(new GLatLng(lat, lng), zoom);
		
		map.hideControls();  
		GEvent.addListener(map, "mouseover", function(){map.showControls();});  
		GEvent.addListener(map, "mouseout", function(){map.hideControls();});  
		
		
		var reasons=[];
		reasons[G_GEO_SUCCESS]            = "Success";
		reasons[G_GEO_MISSING_ADDRESS]    = "Podaj adres.";
		reasons[G_GEO_UNKNOWN_ADDRESS]    = "Nieznany adres.";
		reasons[G_GEO_UNAVAILABLE_ADDRESS]= "Adres nie może zostac wyswietlony.";
		reasons[G_GEO_BAD_KEY]            = "Zly klucz mapy google.";
		reasons[G_GEO_TOO_MANY_QUERIES]   = "Dzienny limit zapytan z tej strony zostal osiagniety.";
		reasons[G_GEO_SERVER_ERROR]       = "Blad serwera.";
		reasons[G_GEO_BAD_REQUEST]        = "A directions request could not be successfully parsed.";
		reasons[G_GEO_MISSING_QUERY]      = "No query was specified in the input.";
		reasons[G_GEO_UNKNOWN_DIRECTIONS] = "Nie potrafie wyznaczyc drogi pomiedzy tymi punktami.";
		    
		GEvent.addListener(gdir, "error", function() {
		  var code = gdir.getStatus().code;
		  var reason="Code "+code;
		  if (reasons[code]) {
		    reason = reasons[code]
		  } 
		
		  alert("Failed to obtain directions, "+reason);
		});

		return map ;	
	} 

}

// ------------------------------------------------------------------------
// MAPA NA STRONE GLOWNA
// ------------------------------------------------------------------------
function load_map(id_miejscowosc)
{

	GDownloadUrl('/mapka/lib/get_xml.php?mode=get_city_info&id_miejscowosc=' + id_miejscowosc, function(data, responseCode)	
	{

		if(responseCode == 200) {
			var xml = GXml.parse(data);
			
			var root_name = xml.documentElement;

 
	        var lat = root_name.getElementsByTagName('lat');
	        var lng = root_name.getElementsByTagName('lng');
			var zoom = root_name.getElementsByTagName('zoom');


			map = create_map(parseFloat(lat[0].childNodes[0].nodeValue), parseFloat(lng[0].childNodes[0].nodeValue), parseFloat(zoom[0].childNodes[0].nodeValue));
			markery = [];							

			
			if (map){
				GDownloadUrl('/mapka/lib/get_xml.php?mode=get_places_in_city&id_miejscowosc=' + id_miejscowosc, function(data2, responseCode2) 
				{
			
					if(responseCode2 == 200) {	
					
						var xml = GXml.parse(data2);
						var xml_places = xml.documentElement;
						var places = xml_places.getElementsByTagName('place');
					
							
						for (var i = 0; i < places.length; i++) 
						{
							
							// ikonka 
							var icon = new GIcon();  				
	 
							if (places[i].getAttribute('icon').length > 0)
							{
								icon.image = places[i].getAttribute('icon') ;
						        icon.iconAnchor=new GPoint(12,12);
						        icon.infoWindowAnchor = new GPoint(12,12);							
							}
							else
							{
								//brakuje ikony dla markera, nie dodany wpis w global_config??
								icon.image = "http://labs.google.com/ridefinder/images/mm_20_black.png";							 
						        icon.iconAnchor=new GPoint(12,12);
						        icon.infoWindowAnchor = new GPoint(12,12);	
							}
							// ---
	
	
					         
							// nazwa 
							if (places[i].getAttribute('nazwa').length > 0)
							{
								place_name = '<div style="font-size:xx-small;"><strong>' + places[i].getAttribute('nazwa') + '</strong></div>';
							}
							else
							{
								place_name = '' ; 
							}
							// ---
	
							// nazwa kategorii 
							if (places[i].getAttribute('nazwa_kategorii').length > 0)
							{
								place_category = '<div style="font-size:xx-small;">' + '<em>' + places[i].getAttribute('nazwa_kategorii') + '</em>' + '</div>';
							}
							else
							{
								place_category = '' ; 
							}
							// ---
									
				
							// avatar
							if (places[i].getAttribute('typ_obiektu').length > 0){
								
								if (places[i].getAttribute('typ_obiektu') != "0"){
									//to jest obiekt
									if(places[i].getAttribute('foto_id').length > 0)
									{
										place_foto = '<img style="width:40px;height:40px;" src="'+'http://spanie.pl/fotki/male/' +places[i].getAttribute('foto_id')+ '.jpg' +'" border=1>';
									}
									else
									{
										place_foto = '';
									}										
								}
								else{
									//to jest atrakcja 
									if (places[i].getAttribute('foto_id').length > 0)
									{
										place_foto = '<img style="width:40px;height:40px;" src="'+'http://spanie.pl/atrakcje/srednie/' +places[i].getAttribute('foto_id')+ '.jpg' +'" border=1>';
									}
									else
									{
										place_foto = '';
									}										
								}

							}
							else{
								place_foto = '';				
							}
	
							// ---
		
							// url
							if (places[i].getAttribute('login').length > 0)
							{
								place_url = 'http://zakopane.info.pl/' + places[i].getAttribute('nazwa_miasta') + '-mapa-noclegi-' + places[i].getAttribute('login') ;
							}
							else
							{
								place_url = 'http://zakopane.info.pl/Zakopane-' + places[i].getAttribute('slug_tytul') + '-atrakcje-turystyczne-' + places[i].getAttribute('id');
							}
							// ---
							
							var info = '<table style="width:90px;height:50px;"><tr><td><a href="' + place_url + '" >' + place_foto + '</a></td><td><a href="' + place_url + '" >' + place_name +  '</a>' + place_category + '</td></tr></table>';

							var point = new GLatLng(parseFloat(places[i].getAttribute("user_lat")), parseFloat(places[i].getAttribute("user_long")));
										 
							map.addOverlay(createMarker(point, info  , icon , places[i].getAttribute('category')));  

														
							switch_visibility (places[i].getAttribute('category'));
							
					
				  		}		
						

						//zakometowana linijka 36 ze zmienna side_bar_html
						document.getElementById("side_bar").innerHTML = '<div id="sidebarhidder" style="display:none; height:auto;"> ' + side_bar_html + '</div>';
						
					
					}
					else{
						if(responseCode2 == -1) {
							alert("Data request timed out. Please try later.");
					  	} 
					  	else { 
							alert("Request resulted in error. Check XML file is retrievable.");
						}		
					} 				
						
	
				})	;
				
				//poi 
				GDownloadUrl('/mapka/lib/get_xml.php?mode=get_poi_points&id_miejscowosc=' + id_miejscowosc, function(poi_data, poi_responseCode) 
				{
			
					if(poi_responseCode == 200) {	
					
						var xml = GXml.parse(poi_data);
						var xml_poi = xml.documentElement;
						var pois = xml_poi.getElementsByTagName('poi');
					
							
						for (var i = 0; i < pois.length; i++) 
						{
							
							// ikonka 
							var icon = new GIcon();  				
	 
							if (pois[i].getAttribute('icon').length > 0)
							{
								icon.image = pois[i].getAttribute('icon') ;
						        icon.iconAnchor=new GPoint(12,12);
						        icon.infoWindowAnchor = new GPoint(12,12);							
							}
							else
							{
								//brakuje ikony dla markera, nie dodany wpis w global_config??
								icon.image = "http://labs.google.com/ridefinder/images/mm_20_black.png";							 
						        icon.iconAnchor=new GPoint(12,12);
						        icon.infoWindowAnchor = new GPoint(12,12);	
							}
							// ---
	
      
							// nazwa 
							if (pois[i].getAttribute('name').length > 0)
							{
								poi_name = '<div style="font-size:xx-small;"><strong>' + pois[i].getAttribute('name') + '</strong></div>';
							}
							else
							{
								poi_name = '' ; 
							}
							// ---
	
							// opis
							if (pois[i].getAttribute('description').length > 0)
							{
								poi_description = ' <br/><div style="font-size:xx-small;">' + '<em>' + pois[i].getAttribute('description') + '</em>' + '</div>';
							}
							else
							{
								poi_description = '' ; 
							}
							// ---

					
							var info = poi_name + poi_description

							var point = new GLatLng(parseFloat(pois[i].getAttribute("lat")), parseFloat(pois[i].getAttribute("lng")));
										 
							map.addOverlay(createMarker(point, info  , icon , pois[i].getAttribute('poiAgregatedCategoryId')));  
					
							switch_visibility (pois[i].getAttribute('poiAgregatedCategoryId'));
							
				  		}			  		

					}
					else{
						if(poi_responseCode == -1) {
							alert("Data request timed out. Please try later.");
					  	} 
					  	else { 
							alert("Request resulted in error. Check XML file is retrievable.");
						}		
					} 				
						
	
				})	;				
				// ---

				
			}

		} 

		else{
			if(responseCode == -1) {
				alert("Data request timed out. Please try later.");
		  	} 
		  	else { 
				alert("Request resulted in error. Check XML file is retrievable.");
			}		
		} 

	
	} ) ;

			 
}
	

// ------------------------------------------------------------------------
// SHOW / HIDE
// ------------------------------------------------------------------------

function is_inArray ( array , search_phrase )
{
	  var phrase = parseInt(search_phrase);
	  for( var i = 0; i < array.length; i++ )
	  {
	  		var element = parseInt(array[i] );
		    if( phrase == element)
		    {
		      return i;
		    }
	  }
	  return false;
}

//-------------------------------------------------------------------------
// kategorie miejsc
//-------------------------------------------------------------------------

function ukryjPokazKategorie(kategoria,pokaz)
{
	// jesli pokaz = false, to znaczy ze mamy ukryc, w przeciwnym wypadku pokazac

	var int_kategoria = parseInt (kategoria);

	for(var i=0; i<markery.length; i++)
	{

		if (markery[i].categories.split(',').length > 1){
			arrCategories = markery[i].categories.split(',');

			
			if(is_inArray (arrCategories, int_kategoria))
			{
					
				if(pokaz==true)
					markery[i].show();
				else{
					markery[i].hide();
				}
					
			}			
		}
		else{	

			var temp_category = parseInt (markery[i].categories);
			if(temp_category == int_kategoria)
			{						
				if(pokaz==true)
					markery[i].show();
				else{
					markery[i].hide();
				}
					
			}			
		}
					

	}

}

function categories_show_hide (checkbox,kategoria)
{		
	if(document.getElementById(checkbox).checked)
		ukryjPokazKategorie(kategoria,true);
	else
		ukryjPokazKategorie(kategoria,false);
}


// ------------------------------------------------------------------------
// DIRECTIONS
// ------------------------------------------------------------------------

function getDirections() {
  // ==== Set up the walk and avoid highways options ====

	var sidebarhidder	= 'sidebarhidder';
 
	
	el = document.getElementById(sidebarhidder) ;
	 
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(sidebarhidder).style.display = 'block';
	}
	else {
		if (document.layers) { // Netscape 4
			document.sidebarhidder.display = 'block';
		}
		else { // IE 4
			document.all.sidebarhidder.style.display = 'block';
		}
	}
	
  
  var opts = {};
  if (document.getElementById("walk").checked) {
     opts.travelMode = G_TRAVEL_MODE_WALKING;
  }
  if (document.getElementById("highways").checked) {
     opts.avoidHighways = true;
  }
  // ==== set the start and end locations ====
  var saddr = document.getElementById("saddr").value
  var daddr = document.getElementById("daddr").value
  gdir.load("from: "+saddr+" to: "+daddr, opts);
}

// This function picks up the click and opens the corresponding info window
function myclick(i) {
  gmarkers[i].openInfoWindowHtml(htmls[i]);
}

// functions that open the directions forms
function tohere(i) {
  gmarkers[i].openInfoWindowHtml(to_htmls[i]);
}
function fromhere(i) {
  gmarkers[i].openInfoWindowHtml(from_htmls[i]);
}



function switch_visibility (catId){
	
	var strElement	= '';
	strElement = 'li_category' + catId ; 
	
	el = document.getElementById(strElement) ;
	 
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(strElement).style.display = 'block';
	}
	else {
		if (document.layers) { // Netscape 4
			document.strElement.display = 'block';
		}
		else { // IE 4
			document.all.strElement.style.display = 'block';
		}
	}

}


/*
var categoriesToHide = [];

function get_ids_to_hide (){
	GDownloadUrl('/mapka/lib/get_xml.php?mode=get_defaults_for_categories_visibility', function (data3, resp3)
		{											
			if(resp3 == 200) {	
					
				var xml = GXml.parse(data3);
				var xml_items = xml.documentElement;
				var itemsId = xml_items.getElementsByTagName('item');

				for (var i = 0; i < itemsId.length; i++) 
				{
					categoriesToHide.push(parseInt (itemsId[i].getAttribute('itemId')));	 	
		  		}
		  						 			
			}
		}
	);	


}

function hide_markers (){
	alert (categoriesToHide);
	for (var i = 0; i < markery.length; i++) 
	{
		var temp_category = parseInt (markery[i].categories);	
		if(is_inArray (categoriesToHide,temp_category))
		{						
			markery[i].hide();						
		}	
	}	
}
*/ 
