/*
 * Google Maps Search functions
 * by Jacek Partyka & Tomasz Banasiak
 */
var markers = [];
var znaczniki = new Array();
var baseIcon = null;

function adminStartGMaps()
{
	//alert('gmaps started!');
   if (typeof(google) != 'undefined')
   {
      google.load("maps", "2.x", {callback: function(){
           reasons[G_GEO_SUCCESS] = "Powodzenie";
           reasons[G_GEO_MISSING_ADDRESS] = "Brak adresu. Adres nie został podany lub jest pusty";
           reasons[G_GEO_UNKNOWN_ADDRESS] = "Nieznany adres: Nie można odnaleźć podanego adresu lub jest on podany niepoprawnie";
           reasons[G_GEO_UNAVAILABLE_ADDRESS] = "Adres niedostępny:  Nie można podać współrzędnych lokalizacji ze względu na warunki prawne bądź kontrakty.";
           reasons[G_GEO_BAD_KEY] = "Niepoprawny klucz: Klucz API jest nieprawidłowy";
           reasons[G_GEO_TOO_MANY_QUERIES] = "Za dużo zapytań: Limit zapytań został wyczerpany";
           reasons[G_GEO_SERVER_ERROR] = "Bład serwera: Nie można połączyć się z serwerem GeoCode";

           baseIcon = new GIcon(G_DEFAULT_ICON);
           baseIcon.shadow = "m/img/shadow.png";
           baseIcon.iconSize = new GSize(25, 27);
           baseIcon.shadowSize = new GSize(30, 27);
           baseIcon.iconAnchor = new GPoint(9, 27);
           baseIcon.infoWindowAnchor = new GPoint(18, 5);
        }});
   }
}

function startGMaps()
{
   var protocoltxt = document.location.protocol.substring(0,document.location.protocol.length -1);

   if (protocoltxt == 'http' && !CARD)
   {
      google.load("maps", "2.x", {callback: function(){
         reasons[G_GEO_SUCCESS] = "Powodzenie";
         reasons[G_GEO_MISSING_ADDRESS] = "Brak adresu. Adres nie został podany lub jest pusty";
         reasons[G_GEO_UNKNOWN_ADDRESS] = "Nieznany adres: Nie można odnaleźć podanego adresu lub jest on podany niepoprawnie";
         reasons[G_GEO_UNAVAILABLE_ADDRESS] = "Adres niedostępny:  Nie można podać współrzędnych lokalizacji ze względu na warunki prawne bądź kontrakty.";
         reasons[G_GEO_BAD_KEY] = "Niepoprawny klucz: Klucz API jest nieprawidłowy";
         reasons[G_GEO_TOO_MANY_QUERIES] = "Za dużo zapytań: Limit zapytań został wyczerpany";
         reasons[G_GEO_SERVER_ERROR] = "Bład serwera: Nie można połączyć się z serwerem GeoCode";

         baseIcon = new GIcon(G_DEFAULT_ICON);
         baseIcon.shadow = "m/img/shadow.png";
         baseIcon.iconSize = new GSize(25, 27);
         baseIcon.shadowSize = new GSize(30, 27);
         baseIcon.iconAnchor = new GPoint(9, 27);
         baseIcon.infoWindowAnchor = new GPoint(18, 5);
      }});
      

   }

}

// ====== Array for decoding the failure codes ======
var reasons = [];


function showAddressOnMap(url, lat, lon, tytul, adres) {
	var map;
	tb_show('Zobacz wybrany punkt na mapie',url,'');
	if (lat > 0 || lon > 0) {
		document.getElementById("gmap").style.height = '420px';
		document.getElementById("gmap").style.width = '510px';
		map = new GMap(document.getElementById("gmap"));
		map.setUIToDefault();
		//map.addControl(new GMapTypeControl());
		var marker = new GMarker(new GLatLng(parseFloat(lat), parseFloat(lon)));
		map.addOverlay(marker);
		map.setCenter(new GLatLng(parseFloat(lat), parseFloat(lon)), 14);
		map.openInfoWindowHtml(map.getCenter(), tytul + "<br/>"
				+ adres);

	} else {
		document.getElementById("gmap").style.height = '100px';
		document.getElementById("gmap").innerHTML = '<div class="message">Nie można znaleźć adresu, przepraszamy.</div>';
	}
	return false;
}

function vAddMarker(point, title, addr, ico) {

	var letteredIcon = new GIcon(baseIcon);
	letteredIcon.image = ico;

	markerOptions = {
		icon : letteredIcon
	};
	var marker = new GMarker(point, markerOptions);

	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml("<b>" + title + "</b><br/>" + addr);
	});

	// dodajemy znaczniki do tablicy
	var punkt = new Array(3);
	punkt[0] = point;
	punkt[1] = title;
	punkt[2] = addr;

	znaczniki.push(punkt);

	return marker;

}

function startMap() {
	var geo = new GClientGeocoder();
	geo
			.getLatLng(
					'polska',
					function(result) {
						if (result) {
							map.setCenter(result, 6);
							GEvent.addListener(map, 'dragend', function() {
								setLoading(1);
								updatePoints();
							});
							GEvent.addListener(map, 'zoomend', function() {
								setLoading(1);
								updatePoints();
							});
							GEvent.addListener(map, 'dragstart', function() {
								setLoading(3);
								updatePoints();
							});

							updatePoints();
						} else {
							alert('Niestety nie znaleziono podanej lokacji, lub nie można ustalić jej jednoznacznie. Spróbuj wpisać inne słowa kluczowe. Zalecana forma zapytania to "Miasto, ulica"');
							return false;
						}
					});
}

function selectMarker(id) {
	map.panTo(znaczniki[id][0]);
	map.openInfoWindowHtml(znaczniki[id][0], "<b>" + znaczniki[id][1]
			+ "</b><br/>" + znaczniki[id][2]);
	if (exmapa)
		document.getElementById('message').innerHTML = 'Zaznaczony punkt: <b>' + znaczniki[id][1] + '</b>';
}

function pobierzWspolrzedne() {
	var znaczniki = new Array();
	var q = document.getElementById('query').value;
	var geo = new GClientGeocoder();
	geo
			.getLatLng(
					q,
					function(result) {
						if (result) {
							wyszukaj(1, result.toUrlValue());
							return result;
						} else {
							alert('Niestety nie znaleziono podanej lokacji, lub nie można ustalić jej jednoznacznie. Spróbuj wpisać inne słowa kluczowe. Zalecana forma zapytania to "Miasto, ulica"');
							return false;
						}
					});
}

function pokazMape(result) {
	map = new GMap(document.getElementById("mapaklikalna"));
	map.setUIToDefault();
	map.disableDoubleClickZoom();

	if (result) {
		map.setCenter(new GLatLng(result.lat(), result.lng()), 14);
		marker = new GMarker(new GLatLng(result.lat(), result.lng()));
		map.addOverlay(marker);

	} else
		map.setCenter(new GLatLng(52.106505, 19.445801), 6);

	GEvent
			.addListener(map,
					'dblclick',
					function(overlay, point) // Add a click listener
					{
						if (point) {
							map.clearOverlays();
							marker = new GMarker(new GLatLng(point.lat(), point
									.lng()));
							map.addOverlay(marker);
							document.getElementById('longitude').value = point
									.toUrlValue();
							var dane = document.getElementById('ZZZ_BUTTON');
							if (dane.innerHTML.indexOf('wyslij_mape') == -1) {
								dane.innerHTML += '&nbsp;&nbsp;&nbsp;<input type=\"button\" value="ZATWIERDŹ" class="button" onclick=\"wyslij_mape()\" />';
							}

						}
					});
}

function checkIfAddressCorrect(search, lat, lng, miasto) {
	var geo = new GClientGeocoder();
	var wartosc;
	var marker;

	if (lat && lng) {
		document.getElementById('longitude').value = lat + ',' + lng;
		map_show(true);
		map = new GMap(document.getElementById("mapaklikalna"));
		map.disableDoubleClickZoom();
		map.setCenter(new GLatLng(lat, lng), 14);
		marker = new GMarker(new GLatLng(lat, lng));
		map.addOverlay(marker);
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		GEvent.addListener(map, 'dblclick', function(overlay, point) // Add a
																		// click
																		// listener
				{
					if (point) {
						map.clearOverlays();
						marker = new GMarker(new GLatLng(point.lat(), point
								.lng()));
						map.addOverlay(marker);
						document.getElementById('longitude').value = point
								.toUrlValue();
					}
				});
	} else

		geo.getLatLng(search, function(result) {
			if (result) {
				document.getElementById('longitude').value = result
						.toUrlValue();
				map_show(true);
				pokazMape(result);
			} else {
				geo.getLatLng(miasto, function(result) {
					if (result) {
						document.getElementById('longitude').value = result
								.toUrlValue();
						map_show(true);
						pokazMape(result);
					} else {
						map_show(false);
						pokazMape(result);
					}

				});
			}
		});

}

function wyslij_mape() {
	document.getElementById('mapaklikalna').style.display = 'none';
	document.getElementById('ajaxloader').style.display = 'block';
	document.getElementById('ZZZ_BUTTON').style.display = 'none';
	document.getElementById('newshopform').submit();
}

function createMarker(point, html) {
	var marker = new GMarker(point);
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	});
	return marker;
}

function pokaz_na_mapie(miasto) {
	var kontener = document.getElementById('GMAP_NAMAPIE_WRAPPER');
	var kontenerki = kontener.getElementsByTagName('div');
	var tmp;
	var lat = 0;
	var lng = 0;
	var opis = '';
	var tablica = new Array();
	var indexx = 0;
	if (kontenerki.length > 0) {
		for ( var i = 0; i < kontenerki.length; i++) {
			$('#ha_cztery_pokaz').hide();
			tmp = kontenerki[i].getElementsByTagName('input');
			for ( var k = 0; k < 3; k++) {
				if (tmp[k].name == 'GMAP_LAT')
					lat = tmp[k].value;
				if (tmp[k].name == 'GMAP_LNG')
					lng = tmp[k].value;
				if (tmp[k].name == 'GMAP_OPIS')
					opis = tmp[k].value;
			}
			indexx = tablica.length;
			tablica[indexx] = new Array();
			tablica[indexx][0] = lat;
			tablica[indexx][1] = lng;
			tablica[indexx][2] = opis;

		}

		document.getElementById('szukaj_wyniki_div').innerHTML = '';
		document.getElementById('szukaj_wyniki_div').appendChild(AJAX_LOADER);

		// var opcje = new GMapOptions;
		// opcje.size = new GSize(600, 400);
		document.getElementById("szukaj_wyniki_div").style.height = '400px';
		map = new GMap(document.getElementById("szukaj_wyniki_div"));
		map.setCenter(new GLatLng(tablica[0][0], tablica[0][1]), 12);
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());

		for ( var i = 0; i < tablica.length; i++) {
			marker = createMarker(new GLatLng(tablica[i][0], tablica[i][1]),
					tablica[i][2])
			map.addOverlay(marker);
		}
	}
}

startGMaps();