var newMarkerTab=new Array;

var dymekInfo;

var punktSave=0;
var plik="images/ico_maps/15.png";
var geo = new GClientGeocoder(); 
var wys = null;

		
		function mapaStart()
		{
			if(GBrowserIsCompatible())  
			{
				mapa = new GMap2(document.getElementById("mapka"),{mapTypes: [G_NORMAL_MAP]});
			    mapa.setCenter(new GLatLng(52.329805,18.537883), 5);
				
				// kontrolki mapy
				mapa.addControl(new GSmallMapControl());
				var typyMapy = mapa.getMapTypes();    
				mapa.addControl(new GMapTypeControl());
				mapa.enableScrollWheelZoom();
				//mapa.addControl(new GOverviewMapControl()); 
				//mapa.addControl(new GScaleControl());
			}
			
		}
	
	//// zaladuj mape z wieloma punktami
	
	
function mapaStartWieleMarkerow(tabMarkery,zoom)
		{
			
		loadDymek();
			
			if(GBrowserIsCompatible())  
			{
				mapa = new GMap2(document.getElementById("mapka"),{mapTypes: [G_NORMAL_MAP]});
			    if(zoom == 1)
				   {
					     mapa.setCenter(new GLatLng(parseFloat(tabMarkery['lat'][0]),parseFloat(tabMarkery['lng'][0])), 5);
				   }
				 if(zoom == 2)
				   {
					     mapa.setCenter(new GLatLng(parseFloat(tabMarkery['lat'][0]),parseFloat(tabMarkery['lng'][0])), 10);
					     mapa.enableScrollWheelZoom();
				   }
				  if(zoom == 3)
				   {
					      mapa.setCenter(new GLatLng(parseFloat(tabMarkery['lat'][0]),parseFloat(tabMarkery['lng'][0])), 10);
					      mapa.enableScrollWheelZoom();
					     	mapa.addMapType(G_NORMAL_MAP); 
					     	mapa.addMapType(G_HYBRID_MAP); 
				   }  
				  if(zoom == 4)
				   {
					      					     
					   if(GBrowserIsCompatible())  
							{
							 
							  mapa.setCenter(new GLatLng(parseFloat(tabMarkery['lat'][0]),parseFloat(tabMarkery['lng'][0])), 10);
									      mapa.enableScrollWheelZoom();
									     	mapa.addMapType(G_NORMAL_MAP); 
									     	mapa.addMapType(G_HYBRID_MAP); 
								
								// listener na ruchy myszka
								GEvent.addListener(mapa,'mousemove',function(p)
								{
									if(!wys || !wys.punkt1)
										return;
									// ustawiamy drugi punkt zaznaczonego obszaru na  LatLng, wskazywane przez kursor myszy
									wys.ustawPunktKoncowy(p);
								});
								
								GEvent.addListener(mapa,'click',function(o,p)
								{
									if(!p)
										return;
									if(!wys)
									{
										// jezeli kliknito, a nie ma jeszcze wstawionego zaznaczenia, to je wstawiamy
										wys = new ZaznaczObszar(p);
										mapa.addOverlay(obszar);
									}
									else
									{
										// jezeli , a zaznaczenie istnieje do  jego zakres (GLatLngBounds)
										GLog.write('Obszar: '+wys.pobierz());
										
										// usuwamy zaznaczenie
										wys.remove(); 
										wys = null;
									}
								});
							}  
									     
					     
					     
					     
					     
					     
				   }
				  else
				   	{
						 mapa.setCenter(new GLatLng(parseFloat(tabMarkery['lat'][0]),parseFloat(tabMarkery['lng'][0])), 10);		
					}
			
				
				// kontrolki mapy
				mapa.addControl(new GSmallMapControl());
				var typyMapy = mapa.getMapTypes();    
				mapa.addControl(new GMapTypeControl());
			}
			
			
			narysujWieleMarkerow(tabMarkery,zoom);
			
			
		}
	
	
	/// ZALADUJ MAPE Z JEDNYM punktem 
	
function mapaStartMarker(lat, lng, plik)

		{
			var plikA='images/ico_maps/'+plik+'.png';
			if(GBrowserIsCompatible())  
			{
				mapa = new GMap2(document.getElementById("mapka"),{mapTypes: [G_NORMAL_MAP]});
			    mapa.setCenter(new GLatLng(lat,lng), 16);
				
				// kontrolki mapy
				mapa.addControl(new GLargeMapControl());
				var typyMapy = mapa.getMapTypes();    
				mapa.addControl(new GMapTypeControl());
				var newMarker=dodajMarker(parseFloat(lat),parseFloat(lng),{ icon: createIcon(plikA) });
			}
			/// DODAJ OBSLUGE ON CLIK
			// LISTENER NASLUCHUJACY KLIKNIECIA

			GEvent.addListener(newMarker, "click", kliknietyMarker);
			loadDymek();
		}
		


function kliknietyMarker() {
	var inf='<a href="show.php?id='+tabMarkery['obiekty_id'][this.txt]+'" target="_parent" class="marker_lnk">';
		inf=inf+tabMarkery['nazwa'][this.txt];
		inf=inf+'</a>';
		inf=inf+'<br>';
		inf=inf+tabMarkery['miasto'][this.txt]+', '+tabMarkery['ulica'][this.txt]+' '+ tabMarkery['nr_dom'][this.txt];
//	this.openInfoWindowHtml(inf);
	this.openExtInfoWindow(
              mapa,
              "simple_example_window",
              inf,
              {beakOffset: 3}
            ); 
}

	
	
function loadDymek(){

	new Ajax.Request('dymekObiekt.php',
	  {
		method:'get',
		onSuccess: function(transport){
    		  var response = transport.responseText
					tablicaOpisow=response;
	 
		}	
	  })
}

function narysujWieleMarkerow(tabMarkery,zoom){
	
	obszar = new GLatLngBounds();           /////////////// definiuje prosotkat
	
	////////////
//	obszar = new GLatLngBounds();
//	var punkt = new GLatLng(lat,lon);   
//    var marker = new GMarker(punkt);   
//    mapa.addOverlay(marker);   
//    obszar.extend(punkt);  
//	
//	
//	var nowyZoom = mapa.getBoundsZoomLevel(obszar);   
//	var nowyPunkt = obszar.getCenter();   
//	mapa.setCenter(nowyPunkt,nowyZoom); 
////////////////////////	
	
		
		for(i=0;i<tabMarkery['lat'].length; i++){
			 
			 
			 newMarkerTab[i]=dodajMarker(parseFloat(tabMarkery['lat'][i]),parseFloat(tabMarkery['lng'][i]),{ title: tabMarkery['nazwa'][i], icon: createIcon(tabMarkery['plik'][i]) });
		 	 newMarkerTab[i].txt=i;
   			 GEvent.addListener(newMarkerTab[i], "click", kliknietyMarker);
			 
			 /////////////////////////////
			// zmiana zoomu w zaleznosci od ilosci markerow
			 
			 var pkt = new GLatLng(parseFloat(tabMarkery['lat'][i]),parseFloat(tabMarkery['lng'][i]));
			 obszar.extend(pkt);
			 
			 
			 
			 ///////////////////
			 
		}
		
		///////////////
		if(zoom == 1)
		   {
			  var nowyZoom = 12;
		   }else
		   	{
				var nowyZoom = mapa.getBoundsZoomLevel(obszar);   
			}
		
			 var nowyPunkt = obszar.getCenter();   
			mapa.setCenter(nowyPunkt,nowyZoom);

}


function place(lat,lng) {
        var point = new GLatLng(lat,lng);
        dodajMarker(parseFloat(lat),parseFloat(lng),{title: '', draggable: true, icon: createIcon(plik) }); 
        mapa.setCenter(point,14); 
     	document.getElementById("message").innerHTML = "";
     	var latForm=document.getElementById('lat');
		var lngForm=document.getElementById('lng');
		lngForm.value=parseFloat(lng);
		latForm.value=parseFloat(lat);
		punktSave = new aktualnyPunkt(point);
		document.getElementById("message").className  = "";
      }


function zmienFocus(){
			
		var mValue = document.getElementById('mLista').value;
		//alert (mValue);
		adr=mValue;
		var ulica = document.getElementById('ulica').value;
		var nr = document.getElementById('nrA').value;
		var zoom=10;
		
		if(ulica!="") {	zoom=12; //alert ("zoom" + zoom);	
		}
		if(nr!="") 	{	zoom=14;  //alert ("zoom" + zoom); 
		}
		
		adr=adr +" "+ ulica +" "+  nr;

			geo.getLocations(adr, function(setFocus)
			{
				// sprawdzamy, czy geokodowanie powiodlo sie
				if (setFocus.Status.code == G_GEO_SUCCESS)
				{
				if(nr!="") 	{
				if (setFocus.Placemark.length > 1) { 
                document.getElementById("message").innerHTML = "<img src=\"images/icons/help.png\" alt=\"info\" /> <b>Czy chodzilo Ci o:</b> <ol> ";
                // Loop through the results
                for (var i=0; i<setFocus.Placemark.length; i++) {
                  var p = setFocus.Placemark[i].Point.coordinates;
                  document.getElementById("message").innerHTML += "<li><b>"+(i+1)+".</b> <a href=\"#\" style=\"color :blue;\" onClick=\"javascript:place(" +p[1]+","+p[0]+")\">"+ setFocus.Placemark[i].address+"<\/a> </b></li>";
                }
              	 document.getElementById("message").className  = "ramka_left";
              	 document.getElementById("message").innerHTML += "</ol> ";
              	}
              	 
              	}
              // ===== If there was a single marker =====
             
               			ileWynikowWyszukiwania=setFocus.Placemark.length;
						//alert("ile"+ileWynikowWyszukiwania);
		                var punkt = setFocus.Placemark[0].Point.coordinates;
		                
						// dodajemy bezposrednio marker
						//alert("chacnce ico");
						if(mValue!="")
						{   				// narysuj marker tylko jak jest podany caly adres - usun stary marker//
							mapa.clearOverlays();
							//alert("punkt"+parseFloat(punkt[1])+'---'+parseFloat(punkt[0])+punkt);
							dodajMarker(parseFloat(punkt[1]),parseFloat(punkt[0]),{title: '', draggable: true, icon: createIcon(plik) });   
							var latForm=document.getElementById('lat');
							var lngForm=document.getElementById('lng');
							lngForm.value=parseFloat(punkt[0]);
							latForm.value=parseFloat(punkt[1]);
							//alert ("dodano");
							punktSave = new aktualnyPunkt(punkt);			// zapisz wsplrzedne aktualnego punktu w obiekcie  obiekt globalny
						}
						
						mapa.setCenter(new GLatLng(parseFloat(punkt[1]),parseFloat(punkt[0])),zoom);
             
						
			}
			else
			{
					// ukrywamy pole wyboru wielu wynikw
			if(ulica!="")	document.getElementById('adresErr').innerHTML="Nie znaleziono takiej ulicy!";
			if(nr>0) 		document.getElementById('nrErr').innerHTML="Nie znaleziono takiego numeru";
			    	//	alert('Nie znalazlem podanego adresu!');
				}
			});
	} 


///////  STWRZ IKONKE

function dodajMarker(lat,lon,opcje)      
    {      
        // obiekt mapa jest obiektem globalnym!      
        //mapa.addOverlay(new GMarker(new GLatLng(lat,lon),opcje)); 
		/// zapiesz wspolrzedne	
		var marker = new GMarker(new GLatLng(lat,lon), opcje);

        GEvent.addListener(marker, "dragstart", function() {
      //    mapa.closeInfoWindow();
        });

        GEvent.addListener(marker, "dragend", function() {
 		
		var nowaPozycja=marker.getPoint();
		 // marker.setLatLng();
//		  var a=marker.getLatLng();
		  var lat=nowaPozycja.lat();
	//	  var a=marker.getLatLng();
		  var lng=nowaPozycja.lng();
     //     marker.openInfoWindowHtml("nowe wspolrzedne lat="+lat+'lng='+lng);
		  		var latForm=document.getElementById('lat');
				var lngForm=document.getElementById('lng');
			    	lngForm.value=parseFloat(lng);
					latForm.value=parseFloat(lat);
		  
        });
		

		
        mapa.addOverlay(marker);
	return marker;
	}   
	
	
function createIcon(plik){
	
	


			var ikona1 = new GIcon();   
            ikona1.image = plik;   
         //   ikona1.shadow = "http://maps.google.com/mapfiles/kml/pal2/icon38s.png";   
            ikona1.iconSize = new GSize(32, 32);   
            ikona1.infoWindowAnchor = new GPoint(16,16);   
            ikona1.iconAnchor = new GPoint(16,16);   
            //ikona1.shadowSize = new GSize(59, 32);
			
			return ikona1;

}

function changeIcon(selectedContinent){				// zmien ikone w zaleznosci od radiobuttona
			

		plik="images/ico_maps/"+selectedContinent+".png";
		var newIco=document.getElementById('icKategoria');
		
		newIco.src=plik;
		
		if(punktSave!=0){
			//alert("zmieni ico");{title: '', draggable: true} {title: '', icon: createIcon(plik)})
			mapa.clearOverlays();
			dodajMarker(parseFloat(punktSave.punkt[1]),parseFloat(punktSave.punkt[0]),{title: '', draggable: true, icon: createIcon(plik) });
		}
}




function podswietlIkone(num){				// zmien ikone w zaleznosci od radiobuttona
			

		plik="images/ico_maps/"+selectedContinent+".png";
		var newIco=document.getElementById('icKategoria');
		
		newIco.src=plik;
		
		if(punktSave!=0){
			//alert("zmieni ico");{title: '', draggable: true} {title: '', icon: createIcon(plik)})
			mapa.clearOverlays();
			dodajMarker(parseFloat(punktSave.punkt[1]),parseFloat(punktSave.punkt[0]),{title: '', draggable: true, icon: createIcon(plik) });
		}
}
function aktualnyPunkt(punkt)
 {
   this.punkt = punkt;

   
 }
 
 
 function mouseOverList(i,kat){
	 
		var plik="images/ico_maps/"+kat+"_o.png"
		var wspolrzedneLat=newMarkerTab[i].getLatLng().lat();
		var wspolrzedneLng=newMarkerTab[i].getLatLng().lng();
			mapa.removeOverlay(newMarkerTab[i]);
		newMarkerTab[i]=dodajMarker(parseFloat(wspolrzedneLat),parseFloat(wspolrzedneLng),{title: '', draggable: false, icon: createIcon(plik) });

 }

 function mouseOutList(i,kat){
	 
	 
		var plik=tabMarkery['plik'][i];
		var wspolrzedneLat=newMarkerTab[i].getLatLng().lat();
		var wspolrzedneLng=newMarkerTab[i].getLatLng().lng();
			mapa.removeOverlay(newMarkerTab[i]);
		    newMarkerTab[i]=dodajMarker(parseFloat(wspolrzedneLat),parseFloat(wspolrzedneLng),{title: '', draggable: false, icon: createIcon(plik) });
			newMarkerTab[i].txt=i;
   			GEvent.addListener(newMarkerTab[i], "click", kliknietyMarker);

 }
 

function pobierzRogi(){
	 

var obszar = mapa.getBounds();   
  
var lewyDolny = obszar.getSouthWest();   
var prawyGorny = obszar.getNorthEast(); 

var lewo    = lewyDolny.lng();   
var prawo   = prawyGorny.lng();   
var gora    = prawyGorny.lat();   
var dol     = lewyDolny.lat();   
  
var prawyDolny  = new GLatLng(dol,prawo);   
var lewyGorny   = new GLatLng(gora,lewo);  
	
	
var boundsLeft=document.getElementById('boundsLeft');
	boundsLeft.value=lewo;
	
var boundsRight=document.getElementById('boundsRight');
	boundsRight.value=prawo;
	
var boundsTop=document.getElementById('boundsTop');
	boundsTop.value=gora;
	
var boundsBottom=document.getElementById('boundsBottom');
	boundsBottom.value=dol;
	
	
	
	
//	alert(lewo +'---'+ prawo +'---'+ gora +'---'+ dol);
 }
// prototypowanie zaznaczenia
		function ZaznaczObszar(punkt1,punkt2)  
		{  
		    this.punkt1 = punkt1;   
			this.punkt2 = punkt2 || punkt1;
		}; 
		
	
		
		ZaznaczObszar.prototype.pobierz = function()
		{
			var granica = new GLatLngBounds();
			granica.extend(this.punkt1);
			granica.extend(this.punkt2);
			return granica;
		};
		
		ZaznaczObszar.prototype.ustawPunktKoncowy = function(punkt)
		{
			// dzieki tej metodzie bedzie mozna ustawic drugi punkt zaznaczanego obszaru
			this.punkt2 = punkt;
			this.redraw(true);
		};
		
		ZaznaczObszar.prototype.initialize = function(mapa)
		{
			// wstawienie odpowiedniego diva
			this.mapa = mapa;
			var kontener = document.createElement('div');
			kontener.style.border = '2px solid red';			
			kontener.style.position = 'absolute';
			this.mapa.getPane(G_MAP_MAP_PANE).appendChild(kontener);
			this.kontener = kontener;
		};
		
		ZaznaczObszar.prototype.remove = function()
		{
			// usuniecie zaznaczenia
			this.kontener.parentNode.removeChild(this.kontener);
		};

		ZaznaczObszar.prototype.copy = function()
		{
			return new ZaznaczObszar(this.punkt1,this.punkt2);
		};

		ZaznaczObszar.prototype.redraw = function(wymus)
		{
			if (!wymus || !this.punkt2 || !this.punkt1)
				return;
				
			var x1 = this.mapa.fromLatLngToDivPixel(this.punkt1).x;
			var y1 = this.mapa.fromLatLngToDivPixel(this.punkt1).y;
			var x2 = this.mapa.fromLatLngToDivPixel(this.punkt2).x;
			var y2 = this.mapa.fromLatLngToDivPixel(this.punkt2).y;
			
			// jesli x2 jest wiekszy niz x1 to zamieniamy je miejscami
			if(x1>x2)
			{
				var x_temp = x1;
				x1 = x2;
				x2 = x_temp;
			}
			
			// jesli y2 jest wiekszy niz y1 to zamieniamy je miejscami
			if(y1>y2)
			{
				var y_temp = y1;
				y1 = y2;
				y2 = y_temp;
			}
			
			// ustawiamy nowa szerokosc, wysokosc i odleglosc od lewego gornego rogu mapy
			this.kontener.style.left 	= x1+'px';
			this.kontener.style.top 	= y1+'px';
			this.kontener.style.width	= x2-x1+'px';
			this.kontener.style.height	= y2-y1+'px';
		};

