var mapa;
var mapaShow;
var mainMarker = null;
var ie_punkt = null;
var ie_wersja = false;
var userID = 0;
var activeMarker = null;
var selectedMarker = null;
var editListener;

if (navigator.appName == 'Microsoft Internet Explorer')
{
	var ua = navigator.userAgent;
	var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
	if (re.exec(ua) != null)
		ie_wersja = parseFloat(RegExp.$1);
}

function findSpot(adres)
{
	if(!geo) return;
	geo.getLatLng(adres,function(punkt)
	{
		if (!punkt)
		{
			alert(adres + " nie został znaleziony!");
		}
		else
		{
			mapa.setCenter(punkt, 15);
			mapa.clearOverlays();
			updateCoords(punkt.lat(), punkt.lng());
			mainMarker = addMarker(punkt, adres);
		}
	});
}

function addMarker(punkt,txt)
{
	var marker = new GMarker(punkt, {title: txt});
	marker.txt=txt;
	mapa.addOverlay(marker);
	
	return marker;
}
				
function removeMarker()
{
	if(mainMarker)
	{
		mapa.removeOverlay(mainMarker);
	}
}

function updateCoords(x, y)
{
	jQuery("#coordX").val(x);
	jQuery("#coordY").val(y);
}
								
function mapaAddStart()  
{  
    if(GBrowserIsCompatible())
    {  
		mapa = new GMap2(document.getElementById("mapkaAdd"));
		mapa.enableScrollWheelZoom();    
		mapa.setCenter(new GLatLng(51.91935400090768,19.58160400390625),6);
		mapa.addControl(new GLargeMapControl());
		mapa.addControl(new GMapTypeControl());
		mapa.addControl(new GOverviewMapControl());
		mapa.addControl(new GScaleControl()); 
		
		if(ie_wersja = 8)
		{
			GEvent.addListener(mapa,'mousemove',function(punkt)
			{
				ie_punkt = punkt;
			});
		}
		
		GEvent.addListener(mapa,"click",function(marker, punkt){
			if(marker)
			{
				mapa.removeOverlay(marker);
			}
			else if(punkt)
			{	
				if(ie_wersja == 8)
				{  
					punkt = ie_punkt;
				}
				
				removeMarker();
				updateCoords(punkt.lat(), punkt.lng());								
				mainMarker = addMarker(punkt, "");
			}
		});						
		
		//mainMarker = addMarker(new GLatLng(53.400,14.400), "teskt jakis");
		geo = new GClientGeocoder();
    }  
}

function mapaShowStart(uid)  
{  
	if(GBrowserIsCompatible())
    {  
		mapaShow = new GMap2(document.getElementById("mapkaShow"));
		mapaShow.enableScrollWheelZoom();    
		mapaShow.setCenter(new GLatLng(51.91935400090768,19.58160400390625),6);
		mapaShow.addControl(new GLargeMapControl());
		mapaShow.addControl(new GMapTypeControl());
		mapaShow.addControl(new GOverviewMapControl());
		mapaShow.addControl(new GScaleControl());
		
		if(ie_wersja = 8)
		{
			GEvent.addListener(mapaShow,'mousemove',function(punkt)
			{
				ie_punkt = punkt;
			});
		}
		
		GDownloadUrl('loadmarkers.php', function(dane,kodOdpowiedzi)
		{
			if(kodOdpowiedzi==200)
			{
				var xml = GXml.parse(dane);
				var markery = xml.documentElement.getElementsByTagName("marker");
				for(var i=0; i<markery.length; i++)
				{
					var admin		=	markery[i].getAttribute("admin");
					var id			=	parseInt(markery[i].getAttribute("id"));
					var user		=	parseInt(markery[i].getAttribute("user"));
					var lat			=	parseFloat(markery[i].getAttribute("lat"));
					var lng			=	parseFloat(markery[i].getAttribute("lng"));
					var nazwa		=	markery[i].getAttribute("nazwa");
					var adres		=	markery[i].getAttribute("adres");
					var telefon		=	markery[i].getAttribute("telefon");
					var fax			=	markery[i].getAttribute("fax");
					var email		=	markery[i].getAttribute("email");
					var kierownik	=	markery[i].getAttribute("kierownik");
					
					if(user == uid)
					{
						var edit = true;
					} else {
						var edit = false;
					}
					
					var marker		=	showMarker(new GLatLng(lat,lng),admin,id,edit,user,nazwa,adres,telefon,fax,email,kierownik);
				}
			}
			else
			{
				alert('Pobieranie danych nie powiodło się!');
			}
		});
		
 		geo = new GClientGeocoder();
    }  
}

function showMarker(punkt,admin,id,edit,user,nazwa,adres,telefon,fax,email,kierownik)
{
	var marker = new GMarker(punkt, {title: nazwa});
	marker.nazwa=nazwa;
	mapaShow.addOverlay(marker);
	GEvent.addListener(marker,"click",function() {
		var tempNazwa = "<br/><font style='color:#2E6C9F'><b>"+marker.nazwa+"</b></font>";
		var tempAdres = "<br/><b>adres:</b> "+adres;
		var tempTelefon = "<br/><b>telefon:</b> "+telefon;
		var tempFax = "<br/><b>faks:</b> "+fax;
		if(email == "")
		{
			var tempEmail = "";
		} else {
			var tempEmail = "<br/><b>adres e-mail:</b> "+email;
		}
		if(kierownik == "")
		{
			var tempKierownik = "";
		} else {
			var tempKierownik = "<br/><b>kierownik stacji:</b> "+kierownik;
		}		
		if(edit || admin)
		{
			var tempEdit = "<div style='float:left; text-align:left'><div style='color:#99B3CC; cursor:pointer' onclick='TakeMarker("+id+", "+user+")'>edytuj </div></div>";
		} else {
			var tempEdit = "<div style='float:left; text-align:left'></div>";
		}		
		if(admin)
		{
			var tempDelete = "<div style='float:left; text-align:left'><div style='color:#C00301; cursor:pointer' onclick='DeleteMarker("+id+")'>&nbsp;| usuń </div></div>";
		} else {
			var tempDelete = "<div style='float:left; text-align:left'></div>";	
		}	
		var zoom = "<div style='float:right; text-align:right'><div style='color:#99B3CC; cursor:pointer' onclick='zoomMarker("+punkt.lat()+","+punkt.lng()+")'>przybliż +</div></div>";
		var endString = "<div style='float:clear'></div>"
		
		marker.openInfoWindowHtml(tempNazwa+tempAdres+tempTelefon+tempFax+tempEmail+"<br/><br/>"+tempEdit+tempDelete+zoom+endString);
		selectedMarker = marker;
	});
	
	return marker;
}

function zoomMarker(lat, lng)
{
	mapaShow.setCenter(new GLatLng(lat,lng), 15);
}

function editMarker(lat, lng)
{
	jQuery("#editMarker").show();
}

function findSpotEdit(adres)
{
	if(!geo) return;
	geo.getLatLng(adres,function(punkt)
	{
		if (!punkt)
		{
			alert(adres + " nie został znaleziony!");
		}
		else
		{
			mapaShow.setCenter(punkt, 15);
			mapaShow.clearOverlays();
			updateCoords(punkt.lat(), punkt.lng());
			//mainMarker = addMarker(punkt, adres);
		}
	});
}

function addEditMarker(punkt,txt)
{
	var ikonaEdit = new GIcon();  
	ikonaEdit.image = "images/mm_20_green.png";  
	ikonaEdit.shadow = "images/mm_20_shadow.png";  
	ikonaEdit.iconSize = new GSize(12, 20);  
	ikonaEdit.infoWindowAnchor = new GPoint(6,6);  
	ikonaEdit.iconAnchor = new GPoint(6,20);  
	ikonaEdit.shadowSize = new GSize(22, 20);
	
	var marker = new GMarker(punkt, {title: txt, icon: ikonaEdit});
	marker.txt=txt;
	mapaShow.addOverlay(marker);
	
	GEvent.addListener(marker,"click",function() {
		var zoom = "<div style='color:#99B3CC; cursor:pointer' onclick='zoomMarker("+punkt.lat()+","+punkt.lng()+")'>przybliż +</div>";
		marker.openInfoWindowHtml("<div style='text-align:center'><br/>"+txt+"<br/><br/>"+zoom+"</div>");
	});
	return marker;
}

function removeActiveMarker()
{
	if(activeMarker)
	{
		mapaShow.removeOverlay(activeMarker);
	}
}

function DeleteMarker(id)
{	
	jQuery.ajax
	({	
		type: "POST",
		url: "/takemarker.php",	        
		data: "delete="+id,
		success: function(msg)
		{			
			if(msg == 1)
			{
				if(selectedMarker)
				{
					mapaShow.removeOverlay(selectedMarker);
					selectedMarker = null;
					alert("Placówka została usunięta !");
				}
			} else {
				alert("wystąpił błąd podczas usuwania placówki !");
			}
		}		
	});
}

function TakeMarker(id, user)
{	
	jQuery.ajax
	({	
		type: "POST",
		url: "/takemarker.php",	        
		data: "id="+id+"&user="+user,
		success: function(msg)
		{		
			jQuery('#editMarker').html(msg);
			jQuery('#editMarker').show();
		}		
	});

	
	editListener = GEvent.addListener(mapaShow,"click",function(marker, punkt){
		if(punkt)
		{	
			if(ie_wersja == 8)
			{  
				punkt = ie_punkt;
			}
			
			removeActiveMarker();
			updateCoords(punkt.lat(), punkt.lng());								
			activeMarker = addEditMarker(punkt, "nowe położenie placówki");
		}
	});
}

function removeEditListener()
{
	removeActiveMarker();
	GEvent.removeListener(editListener);
}
