var mapa;             
var xml;
var rysuj = [];
var centrum = [];
var r;
var wartosc_koloru = [];
var wartosc_przezroczystosci = [];
var wartosc_outline = [];
var grubosc_polilini = [];
var wartosc_koloru_polilini = [];
var zawartosc_description = [];
var plejsmarki;
var tmp10 = [];
var srodek_poligonu;
var srodek_markera;
var kolor;      //36
var grubosc;
var przezroczystosc;
var tab_mark = [];
var tablica_opisow = new Array();
var tablica_url = new Array();
var dzidzi;
var ff=0xFF;
var tablica_pom1 = new Array();
var tablica_pom2 = new Array();
var wyrazenie = /#26/g;

		                
function dodajMarker(lat,lon)
{
  pkt = new GLatLng(lat,lon);		
  var marker=new GMarker(pkt);     
  mapa.addOverlay(marker);

  GEvent.addListener(marker,"mouseover",function()                    /////50
  {
      srodek_markera = this.getLatLng();
      for(var i=0;i<rysuj.length;i++)
      {
         srodek_poligonu = rysuj[i].getBounds().getCenter();
         if((srodek_poligonu.lat()==srodek_markera.lat()) && (srodek_poligonu.lng()==srodek_markera.lng()))
         {
             kolor = rysuj[i].color;
             grubosc = parseFloat(rysuj[i].weight);
             przezroczystosc = parseFloat(rysuj[i].opacity);
             var ss={'color':'#aaa111','weight':3, 'opacity':0.5}; 
             rysuj[i].setFillStyle(ss);
             this.openInfoWindowHtml(tablica_opisow[srodek_markera]);
         }
      }
      
  });
   GEvent.addListener(marker,"mouseout",function()
  {
      this.closeInfoWindow();
      srodek_markera = this.getLatLng();
      for(var i=0;i<rysuj.length;i++)
      {
         srodek_poligonu = rysuj[i].getBounds().getCenter();
         if((srodek_poligonu.lat()==srodek_markera.lat()) && (srodek_poligonu.lng()==srodek_markera.lng()))
         {
           var tt={'color':kolor,'weight':grubosc, 'opacity':przezroczystosc}; 
           rysuj[i].setFillStyle(tt);  
         }
      }
  });
  GEvent.addListener(marker,"click",function()
  {
      
      srodek_markera = this.getLatLng();
      u = tablica_url[srodek_markera];
      window.document.location=u;   
  });
                              
  return marker;
} 

/////////////////////////////////////////koniec dodajMarker()///////////////////////////////////////
                              
		
function mapaStart()/////////////////////////////////////////////////////////////////////////////////////////////
{
 if(GBrowserIsCompatible())  
 {
  //mapa = new GMap2(document.getElementById("mapka"),{mapTypes: [G_HYBRID_MAP,G_NORMAL_MAP,G_SATELLITE_MAP]});
 // mapa.setCenter(new GLatLng(49.67776432224243,20.93774613325559 ), 5);
  //mapa.addControl(new GLargeMapControl());  
  //var typyMapy = mapa.getMapTypes();    
  //typyMapy[0].getName= function() { return "Mapa";}
  //typyMapy[1].getName = function() { return "Satelita";}
  //typyMapy[2].getName = function() { return "Hybryda";}
  //mapa.addControl(new GMapTypeControl());
  //mapa.addControl(new GOverviewMapControl()); 
  //mapa.addControl(new GScaleControl());               
  mapa = new GMap2(document.getElementById("mapka"));
  mapa.setCenter(new GLatLng(51.909939,18.648047 ), 6);
  mapa.addControl(new GLargeMapControl());  

				                 
 GDownloadUrl("z.kml", function(dane,kodOdpowiedzi)
 {                                                       
  kml = GXml.parse(dane);                
  //plejsmarki = kml.getElementsByTagName("Placemark"); 
  plejsmarki = $(kml).find("Placemark"); 
  
  poliStyle = $(kml).find("PolyStyle"); //wydobywam kolor,gr lini i alfe poligonow
  lineStyle = $(kml).find("LineStyle"); //wydobywam kolor i gr. lini dla polilini
                        
  for(var d=0;d<poliStyle.length;d++) 
  {
    kolor_poligonu = $(poliStyle[d]).find("color");
    kol = $(kolor_poligonu[0]).text();  
    kol = kol.replace(/^\s+|\s+$/g, '');
    f1=kol[0];
    f2=kol[1];
    kol=kol.slice(2);
    kol = zamienKolor(tablica_pom1,kol);
    //kol=parseInt(kol);
    kol="#"+kol;
    //alert(kol[0]+" "+kol[1]+" "+kol[2]+" "+kol[3]+" "+kol[4]+" "+kol[5]);
    wartosc_koloru.push(kol);
    //st_alfa = $(poliStyle[d]).find("fill");
    //alfa = $(st_alfa[0]).text();
    //alfa = alfa.replace(/^\s+|\s+$/g, '');
    alfa=f1+f2;
    alfa="0x"+alfa;
    alfa=alfa/ff;
    wartosc_przezroczystosci.push(alfa);
    gr = $(lineStyle[d]).find("width");
    gr = $(gr[0]).text();
    gr = gr.replace(/^\s+|\s+$/g, ''); 
    gr=parseInt(gr);
    grubosc_polilini.push(gr);
    kolor_polilini = $(lineStyle[d]).find("color");
    bezSzarpa =$(kolor_polilini[0]).text();
    bezSzarpa = bezSzarpa.replace(/^\s+|\s+$/g, '');
    f3=bezSzarpa[0];
    f4=bezSzarpa[1];
    bezSzarpa=bezSzarpa.slice(2);
    bezSzarpa=zamienKolor(tablica_pom1,bezSzarpa);
    //bezSzarpa=parseInt(bezSzarpa);
    zSzarpem = "#"+bezSzarpa;
    //zSzarpem=parseInt(zSzarpem);
    wartosc_koloru_polilini.push(zSzarpem);
    outl=f3+f4;
    outl="0x"+outl;
    outl=outl/ff;
    wartosc_outline.push(outl);
  }

  for(var i=0;i<plejsmarki.length;i++)
  {
    mg =$(plejsmarki[i]).find("MultiGeometry");
    if(mg[0]!=undefined)                                        
    {
      pol = mg[0].getElementsByTagName("Polygon");
      if(pol[0]!=undefined)
      {
       opis=$(plejsmarki[i]).find("name");
       tmp2 = $(opis[0]).text();
       zawartosc_description.push(tmp2);
     }
    }
  }

  var poligony = kml.getElementsByTagName("Polygon");  
                       
  for(var i=0;i<poligony.length;i++)       
  {
     lr= poligony[i].getElementsByTagName("LinearRing");
     coo = lr[0].getElementsByTagName("coordinates");
     wsp_polig = $(coo[0]).text();
    
    var punkty_polilinia = [];
    wzor = /[0-9]+\.[0-9]+\s*\,\s*[0-9]+\.[0-9]+\s*(\,\s*[0-9]+(\.[0-9]+)?)?/g;

    ws = wsp_polig.match(wzor);
   

    for(var j=0;j<ws.length;j++)
    {
      ws[j]=ws[j].replace(/^\s+|\s+$/g, '');
    }
  
    for(var j=0;j<ws.length;j++)
    {
       ws2 = ws[j].split(",");
       var la = parseFloat(ws2[1]);  
       var lo = parseFloat(ws2[0]);
       punkty_polilinia.push(new GLatLng(la,lo)); 
    }

 

    if(punkty_polilinia[0].equals(punkty_polilinia[punkty_polilinia.length-1]))  
    {  
       rysuj.push(new GPolygon(punkty_polilinia,wartosc_koloru_polilini[i],grubosc_polilini[i],wartosc_outline[i],wartosc_koloru[i],wartosc_przezroczystosci[i]));  
    }  
    else  
    {  
       punkty_polilinia.push(punkty_polilinia[0]);
        rysuj.push(new GPolygon(punkty_polilinia,wartosc_koloru_polilini[i],grubosc_polilini[i],wartosc_outline[i],wartosc_koloru[i],wartosc_przezroczystosci[i]));  
    }  
    mapa.addOverlay(rysuj[i]);
  }  
                       
  for(var f=0;f<rysuj.length;f++)
  {
     r=rysuj[f];
     cm = r.getBounds().getCenter();
     latt = cm.lat();
     lngg = cm.lng();
     tab_mark.push(dodajMarker(parseFloat(latt),parseFloat(lngg)));
  }
  for(var i=0;i<rysuj.length;i++)
  {
     centrum_tablica = rysuj[i].getBounds().getCenter();
     tablica_opisow[centrum_tablica]=zawartosc_description[i];
  }
     dajHref();
  });                 ///////////koniec GDownloadUrl()///////////////
 }                   ////////////koniec if //////////////////////////

}                  ////////////koniec mapaStart///////////////////


function dajHref()
{

   //wzorzec = /http:\/\/.+\.[a-zA-Z][a-zA-Z][a-zA-Z]?/;
   wzorzec = /http:\/\/.+\.[a-zA-Z][a-zA-Z][a-zA-Z]?\S*/;
   for(var i=0;i<plejsmarki.length;i++)
   {
        mg =plejsmarki[i].getElementsByTagName("MultiGeometry");
        if(mg[0]!=undefined)                                        
        {
           pol = mg[0].getElementsByTagName("Polygon");
           if(pol[0]!=undefined)
           {
              opis=$(plejsmarki[i]).find("description");
              sparsowane =$(opis[0]).text();
              adres2 = wzorzec.exec(sparsowane);
			  adres2 = String(adres2).replace(wyrazenie, "&");
              tablica_url[rysuj[i].getBounds().getCenter()]=adres2;
           }
        }
  }
}

function zamienKolor(tr1,k)
{
    for(var r=0;r<6;r++)
    {
      tr1[r]=k[r];
      //alert(tr1[r]);
    }
    k="";
    for(var t=5;t>=0;t--)
    {
      k=k+tr1[t];
    }
    for(var t=0;t<6;t++)
    {
      //alert(k[t]);
    }
  return k;
}	

function URLDecode(psEncodeString)
{
  // Create a regular expression to search all +s in the string
  var lsRegExp = /\+/g;
  // Return the decoded string
  return unescape(String(psEncodeString).replace(lsRegExp, " "));
}
	
