var mapa = '';
var opcje = {	title: '',	icon: dodajIkone(		100, 41,		147, 41, 
		"http://nexler.pl/gfx/google2.png",		"http://nexler.pl/gfx/google2-shadow.png"	
	)};

function dodajMarker(wys, szer, url) {
	if (mapa != '') {		var marker = new GMarker(new GLatLng(wys, szer), opcje);		mapa.addOverlay(marker);

		if (url != '') {
			GEvent.addListener(marker, 'click', function() {  
				window.location = url;
			});
		}
	}}

function ustawIkone(icon_h, icon_w, shadow_w, shadow_h, icon, shadow) {
	opcje = {		title: '',		icon: dodajIkone(			icon_h, icon_w,			shadow_h, shadow_w, 
			icon,			shadow
		)	};
}function dodajIkone(wys, szer, wysC, szerC, url, urlC) {	var ikona = new GIcon();  	ikona.image = url;  	ikona.shadow = urlC;  	ikona.iconSize = new GSize(wys, szer);  	ikona.iconAnchor = new GPoint(wys/2, szer);  	ikona.shadowSize = new GSize(wysC, szerC);	return ikona;}

function obslugaBledow(google_dir, google_info){
	if (google_info && google_dir) {
		if (google_dir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
			google_info.innerHTML = '<p><strong>Błąd: ' + google_dir.getStatus().code + '</strong> Nie znaleziono miejsca na ziemi o podanym adresie. Możliwe że adres jest zbyt nowy (niezaindexowany przez Google) lub źle podany.</p>';

		else if (google_dir.getStatus().code == G_GEO_UNAVAILABLE_ADDRESS) 
			google_info.innerHTML = '<p><strong>Błąd: ' + google_dir.getStatus().code + '</strong> Dane dotyczące trasy nie mogą zostać podane przez Google Maps z przyczyn prawnych lub umownych.</p>';

		else if (google_dir.getStatus().code == G_GEO_UNKNOWN_DIRECTIONS)
			google_info.innerHTML = '<p><strong>Błąd: ' + google_dir.getStatus().code + '</strong> Google Maps nie mógł obliczyć trasy łączących punkty. Związane jest to z brakiem połączenia lądowego między tymi punktami bądź brakiem informacji o trasach je łączących.</p>';

		else if (google_dir.getStatus().code == G_GEO_SERVER_ERROR)
			google_info.innerHTML = '<p><strong>Błąd: ' + google_dir.getStatus().code + '</strong> Geokodowanie lub wyszukiwanie trasy zakończyło się błędem, niestety powód jest nieznany w tym momencie.</p>';

		else if (google_dir.getStatus().code == G_GEO_MISSING_QUERY)
			google_info.innerHTML = '<p><strong>Błąd: ' + google_dir.getStatus().code + '</strong> Brakuje parametru HTTP q. Oznacza to że został podany pusty adres.</p>';

		else if (google_dir.getStatus().code == G_GEO_MISSING_ADDRESS) 
			google_info.innerHTML = '<p><strong>Błąd: ' + google_dir.getStatus().code + '</strong> Brakuje parametru HTTP q. Oznacza to że został podany pusty adres.</p>';

		else if (google_dir.getStatus().code == G_GEO_BAD_KEY)
			google_info.innerHTML = '<p><strong>Błąd: ' + google_dir.getStatus().code + '</strong> Nieprawidłowy kod Google Maps.</p>';

		else if (google_dir.getStatus().code == G_GEO_BAD_REQUEST)
			google_info.innerHTML = '<p><strong>Błąd: ' + google_dir.getStatus().code + '</strong> Nieprawidłowa odpowiedź serwera Google.</p>';

		else if (google_dir.getStatus().code == G_GEO_TOO_MANY_QUERIES)
			google_info.innerHTML = '<p><strong>Błąd: ' + google_dir.getStatus().code + '</strong> Google Maps otrzymał zbyt wiele zapytań ze strony w danym momencie. Spróbuj ponownie później.</p>';

		else 
			google_info.innerHTML = '<p><strong>Błąd: ' + google_dir.getStatus().code + '</strong> Nieznany błąd Google Maps.</p>';
	}
}

function dodajWyznaczanie(button, value, info, poz_x, poz_y, color) {
	var google_value = document.getElementById(value);
	var google_button =document.getElementById(button);
	var google_info = document.getElementById(info);

	var google_dir = new GDirections(mapa, google_info);
	
	GEvent.addListener(google_dir, 'error', function () {
		obslugaBledow(google_dir, google_info);
	});
	GEvent.addListener(google_dir, 'addoverlay', function () {
		if (google_dir.getStatus().code == G_GEO_SUCCESS) {
			var odl_text = google_dir.getSummaryHtml();

			var temp_text = odl_text;
			odl_text = odl_text.split('(');
			if (odl_text[0]) temp_text = '<p>Odległość: <strong>' + odl_text[0] + '</strong></p>';
			if (odl_text[1]) temp_text += '<p>Czas: <strong>' + odl_text[1].replace(')', '') + '</strong></p>';
			google_info.innerHTML = temp_text;

			var numMarkers = google_dir.getNumGeocodes();
			for (var licz = 0; licz < numMarkers; licz++) {
				var marker = google_dir.getMarker(licz);
				if (marker != null) marker.hide();
			}

			if (color != '') {
				var linia = google_dir.getPolyline();
				linia.setStrokeStyle({'color': color, 'opacity': 0.7});
				mapa.addOverlay(linia);
			}
		}
	});

	google_button.onclick = function () {
		google_info.innerHTML = '';
		google_dir.load("from: " + google_value.value + " to: " + poz_x + ', ' + poz_y, { "locale": 'pl_PL' });
		return false;
	}

	google_value.onkeydown = function (event) {
		if (event.keyCode == 13) {
			google_info.innerHTML = '';
			google_dir.load("from: " + google_value.value + " to: " + poz_x + ', ' + poz_y, { "locale": 'pl_PL' });
		}
	}

}function mapaStart(element, center_x, center_y, zoom, control, type) {	mapa = new GMap2(document.getElementById(element),{mapTypes: [G_NORMAL_MAP, G_SATELLITE_MAP]});	mapa.setCenter(new GLatLng(center_x, center_y), zoom);
	
	if (control != false) {
		if (control == 'small') mapa.addControl(new GSmallMapControl());
		else if (control == 'large') mapa.addControl(new GLargeMapControl());
	}
	if (type == true) {
		mapa.addControl(new GMapTypeControl());
	}}

