/*
 * Modul Google Maps
 */
$(document).ready(function(){
	/* Typ mapy - zmiana */
	$("input[name='tm']").click(function(){
		tmp = $("input[name='tm']:checked").val();
		typ_mapy = getMapType(tmp);
		startMap();
	});

	/* Typ nawigacji - zmiana */
	$("input[name='kn']").click(function(){
		tmp = $("input[name='kn']:checked").val();
		if(tmp == "brak")
		{
			is_zoom = false;
			typ_zooma = null;
		}
		else
		{
			is_zoom = true;
			typ_zooma = getZoomType(tmp);
		}
		startMap();
	});

	/* Pozycja nawigacji - zmiana */
	$("select[name='pos_kn']").change(function(){
		tmp = $("select[name='pos_kn']").val();
		pos_zooma = getPosition(tmp);
		startMap();
	});

	/* Tryb mapy - zmiana */
	$("input[name='tr']").click(function(){
		tmp = $("input[name='tr']:checked").val();
		if(tmp == "brak")
		{
			is_tryb = false;
			tryb_mapy = null;
		}
		else
		{
			is_tryb = true;
			tryb_mapy = getTrybMapy(tmp);
		}
		startMap();
	});

	/* Pozycja tryb mapy - zmiana */
	$("select[name='pos_tr']").change(function(){
		tmp = $("select[name='pos_tr']").val();
		pos_trybu = getPosition(tmp);
		startMap();
	});

	/* Info skala - zmiana */
	$("input[name='sk']").click(function(){
		tmp = $("input[name='sk']:checked").val();
		if(tmp == "0")
		{
			is_skala = false;
		}
		else
		{
			is_skala = true;
		}
		startMap();
	});
	/* Pozycja tryb mapy - zmiana */
	$("select[name='pos_sk']").change(function(){
		tmp = $("select[name='pos_sk']").val();
		pos_skala = getPosition(tmp);
		startMap();
	});

	$("input#zastosuj").click(function(){
		if(document.getElementById('sze').value>0)
		document.getElementById('mapka').style.width = document.getElementById('sze').value+'px';
		if(document.getElementById('wys').value>0)
		document.getElementById('mapka').style.height = document.getElementById('wys').value+'px';
		startMap();
		return false;
    });


	if(document.getElementById('mapka') != undefined)
	{
		/* Przybliżenie */
		$( ".slider" ).slider(
		{ orientation: 'horizontal',
			min: 0,
			max: 19,
			value: map_zoom,
			change: function() {
				mapa.setZoom($( ".slider" ).slider( "option", "value"));
				map_zoom = mapa.getZoom();
			}
		});
	}

	if(document.getElementById('map_id') != undefined)
	{
		//edycja mapy
		pocz = 0;
	}
	else
	if(document.getElementById('mapka') != undefined)
	{
		// Inicjacja mapy
		typ_mapy = getMapType($("input[name='tm']:checked").val());
		typ_zooma = google.maps.NavigationControlStyle.ZOOM_PAN;
		is_zoom = true;
		if(document.getElementById('mapaint') == undefined) typ_zooma = google.maps.NavigationControlStyle.SMALL;
		pos_zooma = google.maps.ControlPosition.TOP_LEFT;
		tryb_mapy = google.maps.MapTypeControlStyle.HORIZONTAL_BAR;
		is_skala = true;

		startMap();
	}
});

var typ_mapy;
var typ_zooma;
var is_zoom;
var pos_zooma;
var tryb_mapy;
var is_tryb = false;
var pos_trybu;
var is_skala;
var pos_skala;
var geocoder;
var mapa;
var initialLocation;
var ostrow = new google.maps.LatLng(51.6492750857, 17.8122389317);
var latlng = ostrow;
var pocz = 1;
var map_zoom = 13;
var is_scroll = false;

function startMap()
{
	geocoder = new google.maps.Geocoder();
	var myOptions = {
		zoom: map_zoom,
		center: latlng,
		mapTypeId: typ_mapy,
		scaleControl: is_skala,
		scrollwheel: is_scroll,
		scaleControlOptions:
		{
		position: pos_skala
		},
		navigationControl: is_zoom,
		navigationControlOptions:
		{
			style: typ_zooma,
			position: pos_zooma
		},
		mapTypeControl: is_tryb,
		mapTypeControlOptions:
		{
			style: tryb_mapy,
			position: pos_trybu
		}
	}
	mapa = new google.maps.Map(document.getElementById("mapka"), myOptions);
	google.maps.event.addListener(mapa, 'zoom_changed',function() { updateZoom(); });

	// W3C Geolocation - aktualna lokalizacja uzytkownika
	if(navigator.geolocation && pocz)
	{
		navigator.geolocation.getCurrentPosition(function(position) {
			initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
			mapa.setCenter(initialLocation);
			updateCenterPos();
		});
	}
	pocz = 0;
	google.maps.event.addListener(mapa,"drag",function(){updateCenterPos();});
	google.maps.event.addListener(mapa,"click",function(event){placeMarker(event.latLng);});
	updateCenterPos();
	updateMarkers();
	if(document.getElementById('myzoom')!=undefined) document.getElementById('myzoom').innerHTML = ' = ' + mapa.getZoom();
	if(document.getElementById('myzoom2')!=undefined) document.getElementById('myzoom2').value = mapa.getZoom();
}

var markers = new Array();
var m = 0;
function placeMarker(location)
{
	var marker = new google.maps.Marker({
		position: location,
		map: mapa,
		draggable: true,
		icon: 'http://www.google.com/intl/en_ALL/mapfiles/marker.png',
		mynr: m,
		title: "Marker "+(m+1),
		flat: true
	});
	google.maps.event.addListener(marker,"drag",function(){dragMarker(marker);});
	markers.push(marker);
	dragMarker(marker);
	m++;
}

function updateZoom()
{
	map_zoom = mapa.getZoom();
	if($( ".slider" ).slider( "option", "value") != map_zoom) $(".slider").slider({value: map_zoom });
	map_zoom = mapa.getZoom();
	document.getElementById('myzoom').innerHTML = ' = ' + map_zoom;
	document.getElementById('myzoom2').value = map_zoom;
}

function deleteMarker(nr)
{
	document.getElementById('divmarker'+nr).innerHTML = '';
	document.getElementById('divmarker'+nr).style.display = 'none';
	markers[nr] = '';
	startMap();
}

function updateMarkers()
{
	for(i=0;i<markers.length;i++)
	{
		if(markers[i])
		{
			insertMarker(markers[i]);
		}
	}
}

function insertMarker(tmp)
{
	var marker = new google.maps.Marker({
		position: tmp.position,
		map: mapa,
		draggable: true,
		icon: tmp.icon,
		mynr: tmp.mynr,
		title: tmp.title,
		flat: true
	});
	google.maps.event.addListener(marker,"drag",function(){dragMarker(marker);});
	dragMarker(marker);
}

function dragMarker(marker)
{
	markers[marker.mynr].position = marker.position;
	var tmp = marker.position.toString();
	tmp = tmp.substring(1,tmp.length-1);
	var tmp2 = tmp.split(',');
	x = tmp2[0].substring(0, 10);
	y = tmp2[1].substring(0, 10);

	if(document.getElementById('divmarker'+marker.mynr) != undefined)
	{
		document.getElementById('divmarker'+marker.mynr).style.display = '';

		if(document.getElementById('mapafirmy') != undefined)
		{
			document.getElementById('divmarker'+marker.mynr).innerHTML = '<b>Marker '+(marker.mynr+1)+'</b> <img class="img-middle" style="cursor:pointer" onclick="deleteMarker(\''+marker.mynr+'\')" src="/images/admin/delete2.png" alt="Usuń" title="Usuń marker"> <input type="hidden" disabled="disabled" class="disabled" name="markerx[]" style="width:60px" value="'+x+'"><input type="hidden"  name="markerx2[]" value="'+x+'"><input type="hidden" disabled="disabled" class="disabled" name="markery[]" style="width:60px" value="'+y+'"><input type="hidden" name="markery2[]" value="'+y+'"> &nbsp; Ikona: <input type="text" name="ikony[]" style="width:250px" id="ikona'+marker.mynr+'" value="'+marker.icon+'"> <input onclick="updateIkon(\''+marker.mynr+'\');return false" type="submit" class="submit" value="zastosuj">';
		}
		else
		if(document.getElementById('mapafirmydod') != undefined)
		{
			document.getElementById('divmarker'+marker.mynr).innerHTML = '<div style="padding: 2px 0"><img src="/images/marker.gif" alt="" style="vertical-align:middle"> Marker '+(marker.mynr+1)+' <img style="vertical-align:middle;cursor:pointer" onclick="deleteMarker(\''+marker.mynr+'\')" src="/images/delete.png" alt="Usuń" title="Usuń marker"> <input type="hidden" disabled="disabled" class="disabled" name="markerx[]" style="width:60px" value="'+x+'"><input type="hidden" name="ikony[]" style="width:250px" id="ikona'+marker.mynr+'" value="'+marker.icon+'"><input type="hidden"  name="markerx2[]" value="'+x+'"><input type="hidden" disabled="disabled" class="disabled" name="markery[]" style="width:60px" value="'+y+'"><input type="hidden" name="markery2[]" value="'+y+'"></div>';
		}
		else
		{
			document.getElementById('divmarker'+marker.mynr).innerHTML = '<b>Marker '+(marker.mynr+1)+'</b> <img class="img-middle" style="cursor:pointer" onclick="deleteMarker(\''+marker.mynr+'\')" src="/images/admin/delete2.png" alt="Usuń" title="Usuń marker"> &nbsp; X <input type="text" disabled="disabled" class="disabled" name="markerx[]" style="width:60px" value="'+x+'"><input type="hidden"  name="markerx2[]" value="'+x+'"> &nbsp; Y <input type="text" disabled="disabled" class="disabled" name="markery[]" style="width:60px" value="'+y+'"><input type="hidden" name="markery2[]" value="'+y+'"> &nbsp; Ikona: <input type="text" name="ikony[]" style="width:350px" id="ikona'+marker.mynr+'" value="'+marker.icon+'"> <input onclick="updateIkon(\''+marker.mynr+'\');return false" type="submit" class="submit" value="zastosuj">';
		}
	}
}

function updateIkon(nr)
{
	markers[nr].icon = document.getElementById('ikona'+nr).value;
	startMap();
	return false;
}

function updateCenterPos()
{
	latlng = mapa.getCenter();
	var tmp = mapa.getCenter().toString();
	tmp = tmp.substring(1,tmp.length-1);
	var tmp2 = tmp.split(',');
	if(tmp2.length == 2)
	{
		document.getElementById('srodek1').value = tmp2[0].substring(0, 10);
		document.getElementById('srodek2').value = tmp2[1].substring(0, 10);
		document.getElementById('srodek1i').value = tmp2[0].substring(0, 10);
		document.getElementById('srodek2i').value = tmp2[1].substring(0, 10);
	}
}

// Wyszukiwarka pozycji
function codeAddress()
{
	var address = document.getElementById("address").value;
	if(geocoder)
	{
		geocoder.geocode({'address': address}, function(results, status) {
			if(status == google.maps.GeocoderStatus.OK)
			{
				mapa.setCenter(results[0].geometry.location);
				updateCenterPos();
				placeMarker(results[0].geometry.location);
			}
			else
			{
				alert("Brak wskazanej lokalizacji: " + status);
			}
		});
	}
}

function validFormGoogleMaps()
{
	var msg = '';
	if(document.myform.title.value == "") msg += "- Podaj tytuł mapy\n";
	if(document.myform.sze.value == "" || document.myform.wys.value == "") msg += "- Podaj wymiary mapy\n";
	else if(isNaN(document.myform.sze.value) || isNaN(document.myform.wys.value)) msg += "- Podaj poprawne wymiary mapy\n";

	if(msg)
	{
		alert("Popraw dane:\n\n"+msg);
		return false;
	}
	
	return true;
}
