var mapa;
var geo;

function mapaStart(address)  
{  
    if(GBrowserIsCompatible())  // sprawdzamy, czy przeglądarka jest kompatybilna  
    {  
        // tworzymy nowy obiekt mapy, i umieszczamy go w elemencie blokowym o ID "mapka"  
        mapa = new GMap2(document.getElementById("mapka"));  
        // centrujemy mapę w okolicy Szczecina na poziomie zoom = 10  
        mapa.setCenter(new GLatLng(53.41935400090768,14.58160400390625), 10);
		mapa.addControl(new GLargeMapControl());
		
		if(address){
			geokoduj(address);
		}
    }  
}

function dodajMarker(lat,lon,nazwa){
}

function geokoduj(gmina){
	geo = new GClientGeocoder();
	geo.getLatLng(gmina,function(pt)
				{
					if (!pt)
					{
						document.getElementById('mapka').innerHTML = '<p>Miejscowości nie znaleziono.</p>';
					}
					else
					{
						mapa.setCenter(pt, 11);
						
						var marker = new GMarker(pt,{title: gmina});
						mapa.addOverlay(marker);
						
						marker.openInfoWindowHtml('<strong>Miejscowość</strong><br />'+gmina);
					}
				});

}

function track(sciezka, chmurka){
	GDownloadUrl(sciezka, function(dane,kodOdpowiedzi)
	{
		if(kodOdpowiedzi==200)
		{
			var xml = GXml.parse(dane);
			var polilinie = xml.documentElement.getElementsByTagName('polilinia');
			for(var i=0; i<polilinie.length; i++)
			{
				var punkty = polilinie[i].getElementsByTagName("punkt");
				var punkty_polilinia=[];
				
				if(punkty.length == 1){
					var lat = parseFloat(punkty[0].getAttribute("lat"));
					var lon = parseFloat(punkty[0].getAttribute("lon"));
					var pt = new GLatLng(lat, lon);
					
					mapa.setCenter(pt, 11);
					var marker = new GMarker(pt,{title: chmurka});
					mapa.addOverlay(marker);
					
					marker.openInfoWindowHtml('<strong>Atrakcja</strong><br />'+chmurka);
				}
				else{
					for(var j=0; j<punkty.length; j++)
					{
						var lat = parseFloat(punkty[j].getAttribute("lat"));
						var lon = parseFloat(punkty[j].getAttribute("lon"));
						punkty_polilinia.push(new GLatLng(lat,lon));
					}
					if(punkty_polilinia[0].equals(punkty_polilinia[punkty_polilinia.length-1]))
					{
						// jeśli tak to rysujemy polilinię z wypełnieniem
						var rysuj = new GPolygon(punkty_polilinia,'#ff0000',4,0.7,'#ff0000',0.2);
					}
					else
					{
						// jeśli nie to bez
						var rysuj = new GPolyline(punkty_polilinia,'#ff0000',4,0.7);
					}
					mapa.addOverlay(rysuj);
					mapa.setCenter(punkty_polilinia[0], 10);
				}
			}
		}
		else
		{
			alert('Nie mogłem otworzyć pliku dane1.xml');
		}
	});
}



var points = new Array()
var markers = new Array()
var map
var line = undefined
var vertex = true


var new_icon = new GIcon()
new_icon.image = "images/cross.png"
new_icon.size = new GSize(16,16)
new_icon.iconAnchor = new GPoint(8,9)
new_icon.infoWindowAnchor = new GPoint(7,7)

var opt 
opt = {}

opt.icon = new_icon
opt.draggable = true
opt.clickable = false
opt.dragCrossMove = true


var geocoder = new GClientGeocoder();

function showAddress(address) {
  geocoder.getLatLng(
    address,
    function(point) {
      if (!point) {
        alert(address + " not found");
      } else {
        map.setCenter(point, 14);
      }
    }
  );
}

function load(address) {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.setCenter(new GLatLng(52.2419, 21.01), 4);
    map.addControl(new GLargeMapControl())
    map.addControl(new GMapTypeControl())

    GEvent.addListener(map, "click", function (marker, point) {
      if (!vertex)	//dont add new points in Polygon mode
        return
      if (!marker) {
        new_marker = new GMarker(point,opt)
        map.addOverlay( new_marker )
        markers.push(new_marker)
        GEvent.addListener(new_marker,'dragend', function(){
          points[markers.indexOf(this)] = this.getPoint()
          reDraw()
          asArray(points[markers.indexOf(this)])
        })
        
          
      } 
      points.push(point)
      asArray(point)
      reDraw()
    }
    )
	
	if(address)
		showAddress(address);
  }
}

function track2(sciezka){
	GDownloadUrl(sciezka, function(dane,kodOdpowiedzi)
	{
		if(kodOdpowiedzi==200)
		{
			var xml = GXml.parse(dane);
			var polilinie = xml.documentElement.getElementsByTagName('polilinia');
			for(var i=0; i<polilinie.length; i++)
			{
				var punkty = polilinie[i].getElementsByTagName("punkt");
				var punkty_polilinia=[];
				
				if(punkty.length == 1){
					var lat = parseFloat(punkty[0].getAttribute("lat"));
					var lon = parseFloat(punkty[0].getAttribute("lon"));
					var pt = new GLatLng(lat, lon);
					
					map.setCenter(pt, 11);
					var marker = new GMarker(pt);
					map.addOverlay(marker);
				}
				else{
					for(var j=0; j<punkty.length; j++)
					{
						var lat = parseFloat(punkty[j].getAttribute("lat"));
						var lon = parseFloat(punkty[j].getAttribute("lon"));
						punkty_polilinia.push(new GLatLng(lat,lon));
					}
					if(punkty_polilinia[0].equals(punkty_polilinia[punkty_polilinia.length-1]))
					{
						// jeśli tak to rysujemy polilinię z wypełnieniem
						var rysuj = new GPolygon(punkty_polilinia,'#ff0000',4,0.7,'#ff0000',0.2);
					}
					else
					{
						// jeśli nie to bez
						var rysuj = new GPolyline(punkty_polilinia,'#ff0000',4,0.7);
					}
					map.addOverlay(rysuj);
					map.setCenter(punkty_polilinia[0], 10);
				}
			}
		}
		else
		{
			alert('Nie mogłem otworzyć pliku dane1.xml');
		}
	});
}

function clearPoints() {
  points= new Array()
  markers= new Array
  map.clearOverlays()
  //document.getElementById("output").innerHTML = ""
  line = undefined
  vertex = true
  
  ajax.requestFile = 'ajax/czyscpunkty.php';
  ajax.onCompletion = nic;
  ajax.runAJAX();
}

function toArray() {
  html = "var points = new Array()<br/>"
  for (i=0; i<points.length; i++) {
    html = html + 'points['+i+'] = [' + points[i].lat() +
            ', ' + points[i].lng() + ']<br/>'
        
  }
  return html
}

function nic(){}

function toGLatLng() {
  html = "[<br/>"
  for (i=0; i<points.length; i++) {
    html = html + ' new GLatLng(' + points[i].lat() +
            ',' + points[i].lng() + ')'
    if (i <points.length-1)
      html = html +',<br/>'
    else
      html = html + '<br/>]<br/>'
        
  }
  return html
}

function asArray(point) {
	ajax.requestFile = 'ajax/dodajpunkt.php?x='+point.lat()+'&y='+point.lng();
	ajax.onCompletion = nic;
	ajax.runAJAX();
	
  //document.getElementById("output").innerHTML = toArray()
}

function asGLatLng() {
  //document.getElementById("output").innerHTML = toGLatLng()
}

function reDraw() {
  if (vertex) {
    if (line) {
      map.removeOverlay(line)
    }
    line = new GPolyline( points )
    map.addOverlay(line)
  } else {
    map.clearOverlays()
    map.addOverlay(new GPolygon(points,'#000000',2,1,'#FF0000',.5))
  }
}

function delLast() {
  points.pop()
  map.removeOverlay(markers.pop())
  reDraw()
  
  ajax.requestFile = 'ajax/usunpunkt.php';
  ajax.onCompletion = nic;
  ajax.runAJAX();
}

function reShape() {
  map.clearOverlays()
  vertex = !vertex
  
  if (vertex) 
    for (i=0;i<markers.length;i++) 
      map.addOverlay(markers[i])
  
  reDraw()
}

function hideMap(){
	disableGPX();
	document.getElementById("map").style.display = 'none';
	document.getElementById("map_menu").style.display = 'none';
}

function showMap(){
	disableGPX();
	document.getElementById("map").style.display = 'block';
	document.getElementById("map_menu").style.display = 'block';
}

function activateGPX(){
	hideMap();
	document.getElementById("gpx").disabled = false;
}

function disableGPX(){
	document.getElementById("gpx").value = '';
	document.getElementById("gpx").disabled = true;
}