﻿var iconGreen = new GIcon(G_DEFAULT_ICON);
iconGreen.image = '../images/verte.png'; //tutaj wpisać ścieżkę do małej ikony która jest wyświelna na mapie w punkcie
iconGreen.shadow = '';
iconGreen.iconSize = new GSize(21, 27);
iconGreen.iconAnchor = new GPoint(6, 20);
iconGreen.infoWindowAnchor = new GPoint(15, 1);


var customIcons = [];
customIcons["porta"] = iconGreen;

function load() {
  if (GBrowserIsCompatible()) {
	geocoder = new GClientGeocoder();
	map = new GMap2(document.getElementById("googleMaps")); //id kontenera z mapą
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());
	map.setCenter(new GLatLng(52, 16), 4);
	}
}

function searchLocationsNear(center) {
	var radius = document.getElementById('rangeInput').value;  //id pola typu input, w które wpisywany jest zasięg wyszukiwania
	var searchUrl = '../scr/xmlSearch.php?lat=' + center.lat() + '&lng=' + center.lng() + '&range=' + radius; //ścieżka pliku ze skryptem wyszukującym, wraz z parametrami lat, lng wyszukiwanego adresu, oraz zasięgiem
	var bounds = new GLatLngBounds();
	
	GDownloadUrl(searchUrl, function(data, responseCode) {
		if(responseCode == 200) {
		  var xml = GXml.parse(data);
		  var markers = xml.documentElement.getElementsByTagName("dealer");
		  map.clearOverlays();
		  
		  var sidebar = document.getElementById('sidebar'); //id konteneru z wynikami wyszukiwania
		   sidebar.innerHTML = '';
		   if (markers.length == 0) {
			 sidebar.innerHTML = 'Nie znaleziono żadnych punktów na mapie.';
			 map.setCenter(new GLatLng(52, 16), 4);
			 return;
		   }
		  
		  for (var i = 0; i < markers.length; i++) {
			var id = markers[i].getElementsByTagName("id")[0].childNodes[0].nodeValue;
			var name = markers[i].getElementsByTagName("nazwa")[0].childNodes[0].nodeValue;
			var address = markers[i].getElementsByTagName("adres")[0].childNodes[0].nodeValue;
			
			var telLength=xml.documentElement.getElementsByTagName("tel")[i].hasChildNodes();
			if(telLength==true){var tel = markers[i].getElementsByTagName("tel")[0].childNodes[0].nodeValue;}
			else{var tel = '';}
			
			var faxLength=xml.documentElement.getElementsByTagName("fax")[i].hasChildNodes();
			if(faxLength==true){var fax = markers[i].getElementsByTagName("fax")[0].childNodes[0].nodeValue;}
			else{var fax = '';}
			
			var mailLength=xml.documentElement.getElementsByTagName("mail")[i].hasChildNodes();
			if(mailLength==true){var mail = markers[i].getElementsByTagName("mail")[0].childNodes[0].nodeValue;}
			else{var mail = '';}
			
			var wwwLength=xml.documentElement.getElementsByTagName("www")[i].hasChildNodes();
			if(wwwLength==true){var www = markers[i].getElementsByTagName("www")[0].childNodes[0].nodeValue;}
			else{var www = '';}
			
			var point = new GLatLng(parseFloat(markers[i].getElementsByTagName("lat")[0].childNodes[0].nodeValue),
									parseFloat(markers[i].getElementsByTagName("lon")[0].childNodes[0].nodeValue));
			var marker = createMarker(point, name, address, tel, fax, mail, www);
			map.addOverlay(marker);
			var sidebarEntry = createSidebarEntry(marker, name, address);
			sidebar.appendChild(sidebarEntry);
			bounds.extend(point);
		  }
		  map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
		} else if(responseCode == -1) {
			alert("Data request timed out. Please try later."); //komunikaty o błędzie ładowania
		} else { 
			alert("Request resulted in error. Check XML file is retrievable."); //komunikaty o błędzie ładowania
		} 
	});
  }
//}

function searchLocations() {
 var address = document.getElementById('adresInput').value; //id pola typu input, w które wpisuje się adres
 geocoder.getLatLng(address, function(latlng) {
   if (!latlng) {
	 alert(address + ' nie znaleziony'); //alert, jeśli wpisany adres nie występuje
   } else {
	 searchLocationsNear(latlng);
   }
 });
}

function createMarker(point, name, address, tel, fax, mail, www) {
  var marker = new GMarker(point, customIcons["porta"]);
  var html = "<p class='bold purple'>" + name + "</p><div class='bold'>" + address +"</div><div>tel: "+ tel +"</div><div>fax: "+ fax +"</div><div>e-mail: "+ mail +"</div><div>www: "+ www +"</div>"; //linijka odpowiadająca za formatowanie tekstu wewnątrz chmurki
  GEvent.addListener(marker, 'click', function() {
	marker.openInfoWindowHtml(html);
  });
  return marker;
}

function createSidebarEntry(marker, name, address) {
  var div = document.createElement('div');
  var html = '<span class="bold purple">' + name + '</span><br />' + address; //linijka odpowiadająca za formatowanie tekstu w wynikach wyszukiwania
  div.innerHTML = html;
  div.style.cursor = 'pointer';
  div.style.marginBottom = '5px';
  GEvent.addDomListener(div, 'click', function() {
	GEvent.trigger(marker, 'click');
  });
  GEvent.addDomListener(div, 'mouseover', function() {
	div.style.backgroundColor = '#eee';
  });
  GEvent.addDomListener(div, 'mouseout', function() {
	div.style.backgroundColor = '#fff';
  });
  return div;
}
