var map;
var newMarker;

$(document).ready(function(){
	
	if ($("#wojewodztwoSB").size() > 0)
	$("#wojewodztwoSB").change(function(){
		$.get("/dodaj/cities/wojid/"+$(this).attr("value")+"/", function(data){
			$("#citySB").html(data);
			$("#citySB").attr("disabled", "");
		});
	});
	
	$("#header_menu ul li a").hover(
		function(){
			var img = $(this).children("img");
			var src = img.attr("src").replace(".gif","_over.gif");
			
			$(this).children("img").attr("src", src);
		},
		function() {
			var img = $(this).children("img");
			var src = img.attr("src").replace("_over.gif",".gif");
			
			$(this).children("img").attr("src", src);
		}
	);
	
	load();
});

function setNewMarker(map, point) 
{
    lat = point.lat();
    lng = point.lng();
    
    var marker = new GMarker(new GLatLng(lat, lng), {title: "nowy", draggable: true});
    
    GEvent.addListener(marker, "click", function(m, point) {
        map.removeOverlay(this);
        
		addMarkerListner(map);
    });
    
    newMarker = marker;
    map.addOverlay(marker);
    GEvent.removeListener(clickHandler);
}

function load() 
{
    if (GBrowserIsCompatible()) 
    {
      	map = new GMap2(document.getElementById("map"));
      	
      	if ($(".addHotspot").size() > 0)
			addMarkerListner(map);
		
		map.setCenter(new GLatLng(51.919438,19.145136), 6);
		
		var mapControl = new GMapTypeControl();
		map.addControl(mapControl);
		map.addControl(new GLargeMapControl());
		
		if ($("div.loadall").size() > 0)
			$.get('/hotspots/all/', processLocations );
		
		if ($("div.loadOne").size() > 0)
			$.get('/hotspots/one/', processLocationsOne );
			
		if ($("div.loadGroup").size() > 0)
		{
			var id = $("#place_id").attr("value");
			var type = $("#place_type").attr("value");
			
			$.get('/hotspots/group/param/'+id+","+type+"/", processLocations );
		}
			
		if ($(".addHotspot").size() > 0)
		{
			$("form.addHotspot").submit(function (){
				var latitude = newMarker.getLatLng().lat();
				var longitude = newMarker.getLatLng().lng();
				
				$("#latitude").attr("value", latitude);
				$("#longitude").attr("value", longitude);
				
				return true;
			});
		}
    }
  }
  
function addMarkerListner(map)
{
  	clickHandler = GEvent.addListener(map, "click", function(marker, point) {
  		if (point != null)
        	setNewMarker(map, point);
     });
}

function processLocations(content) 
{
    eval("locations = "+content);
    //$('p#location_list').html('');
    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('Miasto: <b>'+element.miasto+'</b><br />Miejsce: <b>'+element.place+'</b><br />Adres: <b>'+element.address+'</b><br /><p class="right"><a href="http://www.wifi4free.pl/hotspot/wifi/param/'+element.wifi_id+','+element.miasto_link+'/">Pokaz szczegoly</a></p>');       
        });
        
        //link = '<a href="#" onclick="moveMapTo('+index+')">'+element.name+'</a><br />';
       // $('p#location_list').append(link);
    });
    
    zoomShowAll();
}

function processLocationsOne() 
{
	var latitude = $("#latitude").attr("value");
	var longitude = $("#longitude").attr("value");
	
	map.setCenter(new GLatLng(latitude,longitude), 12);
	var marker = new GMarker(new GLatLng(latitude, longitude), {});
	map.addOverlay(marker);
}

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));
}