var map=null;
  var photos;
  var cities;
  var photosMarkers = new Array();
  var geocoder = null;
  var openedInfo = false;
  var cityList = false;

  function initialize() {
    if (GBrowserIsCompatible()) {
      map = new GMap2(document.getElementById("map_canvas"));
      //map.enableGoogleBar(); -- przez to mapka przestaje działać
      //map.enableScrollWheelZoom(); -- irytujące
      map.addControl(new GSmallMapControl());
      map.addControl(new GMenuMapTypeControl());
      map.setCenter(new GLatLng(52.205339071889386, 18.55791015625), 6);
        
      getNewPhotos();
      GEvent.addListener(map, "infowindowclose", function() {openedInfo = false; getNewPhotos();});
      GEvent.addListener(map, "moveend", function (){if(!openedInfo) getNewPhotos();});
      GEvent.addListener(map, "click", function(overlay, point) {
        if(!overlay)
        {
          openedInfo = true;
          var html="<form id=\"addForm\" name=\"addForm\" action=\"index.php\" method=\"post\" enctype=\"multipart/form-data\"><table style=\"font-size: 12px;\">"
            +"<tr><td colspan=\"2\"><b>Zdjęcie:</b></td></tr>"
            +"<tr><td colspan=\"2\"><input type=\"file\" name=\"plakat\"></td></tr>"
            +"<tr><td colspan=\"2\"><b>Data zrobienia zdjęcia:</b></td></tr>"
            +"<tr><td colspan=\"2\">"
            +"<select name=\"dzien\">"
            +"<option value=\"1\" >1</option><option value=\"2\" >2</option><option value=\"3\" >3</option><option value=\"4\" >4</option><option value=\"5\" >5</option><option value=\"6\" >6</option><option value=\"7\" selected=\"selected\">7</option><option value=\"8\" >8</option><option value=\"9\" >9</option><option value=\"10\" >10</option><option value=\"11\" >11</option><option value=\"12\" >12</option><option value=\"13\" >13</option><option value=\"14\" >14</option><option value=\"15\" >15</option><option value=\"16\" >16</option><option value=\"17\" >17</option><option value=\"18\" >18</option><option value=\"19\" >19</option><option value=\"20\" >20</option><option value=\"21\" >21</option><option value=\"22\" >22</option><option value=\"23\" >23</option><option value=\"24\" >24</option><option value=\"25\" >25</option><option value=\"26\" >26</option><option value=\"27\" >27</option><option value=\"28\" >28</option><option value=\"29\" >29</option><option value=\"30\" >30</option><option value=\"31\" >31</option>"
            +"</select>"
            +"<select name=\"miesiac\">"
            +"<option value=\"1\" >styczeń</option><option value=\"2\" >luty</option><option value=\"3\" >marzec</option><option value=\"4\" >kwiecień</option><option value=\"5\" >maj</option><option value=\"6\" >czerwiec</option><option value=\"7\" >lipiec</option><option value=\"8\" >sierpień</option><option value=\"9\" selected=\"selected\">wrzesień</option><option value=\"10\" >październik</option><option value=\"11\" >listopad</option><option value=\"12\" >grudzień</option>"
            +"</select>"
            +"<select name=\"rok\">"
            +"<option value=\"2007\" >2007</option><option value=\"2008\" >2008</option><option value=\"2009\" >2009</option><option value=\"2010\" selected=\"selected\">2010</option>"
            +"</select>"
            +"</td></tr>"
            +"<tr><td><b>Osoba zgłaszajaca</b>:</td><td><input type=\"text\" name=\"osoba\" style=\"width: 150px;\" /></td></tr>"
            +"<tr><td><b>Miasto</b>:</td><td><input type=\"text\" name=\"miasto\" style=\"width: 150px;\" /></td></tr>"
            +"<tr><td><b>Ulica</b>:</td><td><input type=\"text\" name=\"ulica\" style=\"width: 150px;\" /></td></tr>"
            +"<tr><td colspan=\"2\">Opis lokalizacji:</td></tr>"
            +"<tr><td colspan=\"2\"><textarea name=\"lokalizacja\" style=\"width: 300px;\"></textarea></td></tr>"
            +"<tr><td colspan=\"2\"><input type=\"submit\" name=\"btn\" value=\"Dodaj graffiti\"></td></tr>"
            +"</table>"
            +"<input type=\"hidden\" name=\"lat\" value=\""+point.y+"\">"
            +"<input type=\"hidden\" name=\"lan\" value=\""+point.x+"\">"
            +"</form>";
          map.openInfoWindowHtml(point, html);
        }
        else
        {
          if(map.getZoom() > 9)
          {
            openedInfo = true;
            var p = overlay.photo;
            var html="<table height=\"400\" width=\"320\" style=\"font-size: 12px;\"><tr><td>"
                + "<a href=\"grafiti/"+p.id+".jpg\" onclick=\"showLightbox(this); return false;\" title=\"\"><img border=\"0\" src=\"g_miniatury/"+p.id+".jpg\"></a>"
                + "</td></tr><tr><td style=\"padding-left: 10px;\">"
                + (p.usuniete?"<span style=\"color: red; font-weight: bold;\">ZAMALOWANE!</span><br>":"")
                + (!p.usuniete && p.zgloszone?"<span style=\"color: green; font-weight: bold;\">ZGŁOSZONE DO ZAMALOWANIA!</span><br>":"")
                + "<u>"+p.miasto+", "+p.ulica+"</u><br>"
                + p.lokalizacja+"<br>"
                + "<br>"
                + "dodał: <b>"+p.osoba+"</b><br>"
                + "sfotografowano: <b>"+p.data+"</b><br>"
                + "<br>"
                + "</td></tr></table>";
                   
            overlay.openInfoWindowHtml(html);
          }
          else
          {
            var city = overlay.city;
            map.setCenter(new GLatLng(city.latitude, city.longitude), 12);
            
          }
        }
      });
      geocoder = new GClientGeocoder();
    }
  }
  
  function updatePhotos() {
        if(photosMarkers!=null)
                for(var i=0; i<photosMarkers.length; i++)
                        map.removeOverlay(photosMarkers[i]);
        photosMarkers = new Array();
        for (var i = 0; i < photos.length; i++)
        {
                var mapIcon = new GIcon(G_DEFAULT_ICON);
                if(photos[i].usuniete==1)
                  mapIcon.image = "images/marker-light.png";
                else if(photos[i].zgloszone==1)
                  mapIcon.image = "images/marker-middle.png";
                var markerOpt = {title:photos[i].miasto+', '+photos[i].ulica, icon: mapIcon};
                var marker = new GMarker(new GLatLng(photos[i].latitude, photos[i].longitude), markerOpt);
                marker.photo = photos[i];
                map.addOverlay(marker);
                photosMarkers[i]=marker;
        }
        cityList = false;
    }
  
  function updateCities() {
        if(photosMarkers!=null)
                for(var i=0; i<photosMarkers.length; i++)
                        map.removeOverlay(photosMarkers[i]);
        photosMarkers = new Array();
        for (var i = 0; i < cities.length; i++)
        {
                var markerOpt = {title:cities[i].miasto};
                var marker = new GMarker(new GLatLng(cities[i].latitude, cities[i].longitude), markerOpt);
                marker.city = cities[i];
                map.addOverlay(marker);
                photosMarkers[i]=marker;
        }
        cityList = true;
    }
  
  function getNewPhotos() {
              var type = 0;
              if (map.getZoom() <= 9) type = 1;
              if(!cityList || (cityList && type==0))
              {
                var bounds = map.getBounds();
                var sw = bounds.getSouthWest();
                var ne = bounds.getNorthEast();
                GDownloadUrl("pobierz.php?miny="+sw.lat()+"&minx="+sw.lng()+"&maxy="+ne.lat()+"&maxx="+ne.lng()+"&type="+type,
                function(content, http) {
                        var newPhotos = eval('('+content+')');
                        if(map.getZoom() > 9)
                        {
                          photos = newPhotos.photos;
                          updatePhotos();
                        }
                        else
                        {
                          cities = newPhotos.cities;
                          updateCities();
                        }
                      });
              }
    }
  
  function centerMap(lat, lan, zoom)
  {
    map.setCenter(new GLatLng(lat, lan), zoom);
  }
  
  function showAddress(t, s) {
        var town=document.getElementById(t).value;
        var street=document.getElementById(s).value;
        var building="";
      if (geocoder&&town!=""&&town!="- miasto -") {
        address = (street!=""&&street!="- ulica -"?street + (building!=""&&building!="- dom -"?" " + building:"") + ", ":"") + town + ", Polska";
        if(street==""||street=="- ulica -") zoom=13; else zoom=15;
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert("Nie znaleziono adresu: " + address);
            } else {
              map.setCenter(map.getCenter(), zoom);
              map.panTo(point);

            }
          }
        );
      }
    }