var clickHandler;
var map;
var lat;
var lng;
var locations;
var bounds;


function mapsmall() {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
		map.setCenter(new GLatLng(52.124, 19.4), 5);
		map.addControl(new GSmallZoomControl());
		$.get('/mapa/10', processLocations );
    }
} 
function mapsbig(servicesId, wojId, cityId, page) {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("mapaPolska"));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(52.124, 19.4));
		$.get('/mapa_kat/'+servicesId+'/'+wojId+'/'+cityId+'/'+page+'', processLocations );
		$(".cPage").html(page);
    }
}
function mapsWoj(servicesId, wojId, page) {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("mapShow"));
		map.addControl(new GLargeMapControl());
		map.setCenter(new GLatLng(52.124, 19.4));
		$.get('/mapashowwoj/'+servicesId+'/'+wojId+'/'+page+'', processLocations );
    }
}
function mapsCity(servicesId, cityId, page) {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("mapShow"));
		map.addControl(new GLargeMapControl());
		map.setCenter(new GLatLng(52.124, 19.4));
		$.get('/mapashowcity/'+servicesId+'/'+cityId+'/'+page+'', processLocations );
    }
}

function processLocations(content) {
    eval("locations = "+content);
    locations.forEach(function(element, index, array) {
        var marker = new GMarker(new GLatLng(element.latitude, element.longitude), {title: element.name});
        map.addOverlay(marker);
        GEvent.addListener(marker, 'click', function() {
            marker.openInfoWindowHtml('<a href="/punkt/'+element.id+'/'+element.id_services+'"><b>'+element.nazwa+'</b><br />'+element.street+'<br />'+element.code+' '+element.miasto_nazwa+'</a>');       
        });
        link = '<a href="#" onclick="moveMapTo('+index+')">'+element.name+'</a><br />';
    });
    zoomShowAll();
}

function moveMapTo(index) {
    map.panTo(new GLatLng(locations[index].latitude, locations[index].longitude));
}

function zoomShowAll() {
    bounds = new GLatLngBounds();
    map.setCenter(new GLatLng(0,0),0);
    
    locations.forEach(function(elemet, id, array) {
        bounds.extend(new GLatLng(locations[id].latitude, locations[id].longitude));
    });
    map.setZoom(map.getBoundsZoomLevel(bounds));
    var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) /2;
    var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) /2;
    map.setCenter(new GLatLng(clat,clng));
}