 var mapa;
 var zoomAddress=17;
 var bounds= new GLatLngBounds();
 var geocoder = new GClientGeocoder();
 var currentCity;
 var show_city=false;
 var marker_icon;
 var marker_width=0;
 var marker_height=0;
 var singleObject;


$(document).ready(function(){
    marker_icon = $('#marker').val();
    setMarkerSize();
    singleObject = $('#singleObject').val();
    setCity($('#defaultCity_name').val());
    var multiMap = $('#multiMap').val();
    var defaultCity;
    if (multiMap == 0) {
        show_city=true;
        defaultCity = $('#defaultCity').val();
    }
    else {
        defaultCity = 0;
        show_city=false;
    }
    
    var mapId =$('#mapId').val();
    getAddresses(defaultCity, mapId, show_city);
    
})


function setMarkerSize(){
     var myImage = new Image();
     myImage.src = '/media/googlemaps/'+marker_icon;

     if(!(myImage.width) && !(myImage.height)){
         setTimeout(setMarkerSize, 10);
     }
     else {
        marker_width=myImage.width;
        marker_height = myImage.height;
     }
}


 window.unload= function() {
 GUnload();
 }


function getAddresses(city, mapId, showCity){
    
    bounds = null;
    bounds = new GLatLngBounds();
    ajaxRequest('GET', '/index/ajaxgetaddresses/module/googlemaps', 'city='+city+'&mapId='+mapId, showAddresses);
    show_city = showCity;
}

function showAddresses(transport){
    load(transport);
}


 function showAddress(lat,lng, html) {
      var baseIcon = new GIcon();
           baseIcon.iconSize=new GSize(marker_width, marker_height);
           baseIcon.shadowSize=new GSize(56,32);
           baseIcon.iconAnchor=new GPoint(16,32);
           baseIcon.infoWindowAnchor=new GPoint(16,0);

      var ico = new GIcon(baseIcon, '/media/googlemaps/'+marker_icon, null, null);

        var marker =null;
        marker = new GMarker(new GLatLng(lng, lat),ico);
        
        GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(html);});

        mapa.addOverlay(marker);

        //pojedynczy obiekt na mapie
        if (singleObject == 1){
            var point = new GLatLng(lng, lat);
            mapa.setCenter(point, 15);
        } else {
            bounds.extend(marker.getPoint());
        }
        
 }


function load(transport) {
          
          if (GBrowserIsCompatible()) {
             mapa= new GMap2(document.getElementById("map"));
             mapa.addControl(new GLargeMapControl());
             mapa.addControl(new GMapTypeControl());
           //  mapa.addControl(new GOverviewMapControl());
             mapa.enableContinuousZoom();
             $.each(transport, function(){
                   var lat = this.lat;
                   var lng = this.lng;
                   var html=createInfoWindow(this.city, this.street, this.number, this.description);
                   showAddress(lat,lng, html);
             });
             if (show_city){
                 showCity(currentCity);
             }
             else if(singleObject == 0) {
                 mapa.setCenter(bounds.getCenter(), mapa.getBoundsZoomLevel(bounds));                 
             }
          }
        }

function createInfoWindow(city, street, number, description){
    var html = '<div>'+city+',<br/> ul. '+street+' '+number+'</div><div>'+description+'</div>';
    return html;
}

function showCity(city){

         geocoder.getLatLng(
         city,
         function(point) {

         mapa.setCenter(point, 11);

         mapa.addControl(new GLargeMapControl());
         
      }
   );
}


function showPoint(lat,lng, zoom){

    var point = new GLatLng(lng, lat);

    mapa.setCenter(point, zoom);

}

function setCity(city){
    currentCity=city;
}
