var map = new GMap2(document.getElementById("GoogleMaps"));
var gmarkers = [];
var side_bar_html = "";
var htmls = [];
var gmarkers_kraj = [];
var kraj_selected = 0;
var pozycje=[];
var i = 0;
// deklarujemy ikonkę bazową
var baseIcon = new GIcon();
baseIcon.image = 'img/map_red.png';
baseIcon.iconSize = new GSize(20,34);
baseIcon.shadow = 'http://maps.google.pl/intl/pl_pl/mapfiles/shadow50.png';
baseIcon.shadowSize = new GSize(37,34);
baseIcon.iconAnchor = new GPoint(16,16);
baseIcon.infoWindowAnchor = new GPoint(16,16); 

//gicons[""] = new GIcon(baseIcon, 'images/stories/', null);
    var tooltip = document.createElement("div");
      map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);
      tooltip.style.visibility="hidden";

if (!Array.prototype.forEach){
  Array.prototype.forEach = function(fun /*, thisp*/){
    var len = this.length;
    if (typeof fun != "function")
      throw new TypeError();

    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    {
      if (i in this)
        fun.call(thisp, this[i], i, this);
    }
  };
}
function loadmap(){
  if (GBrowserIsCompatible()) {
    map.addControl(new GLargeMapControl());
    map.addControl(new GScaleControl);
    
    map.addControl(new GHierarchicalMapTypeControl());
    map.addMapType(G_PHYSICAL_MAP);
    var MapTypes = map.getMapTypes();
    MapTypes[3].getName = function() { return "Fizyczna";}
    MapTypes[3].getAlt = function() { return "Pokaż mapę fizyczną";}
   // map.addControl(new GOverviewMapControl());
    get_marks();
    geocoder = new GClientGeocoder();
    map.enableScrollWheelZoom();
    map.enableContinuousZoom();
  }
}
function fit(){
  var bounds = new GLatLngBounds();
  for(var i=0;i<gmarkers.length;i++){
 // if (!gmarkers[i].isHidden()) {
  bounds.extend(gmarkers[i].getPoint());
 // }
  }
  var lngCenter = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) / 2;
  var latCenter = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) / 2;
  if(lngCenter==0) {
    map.setCenter(new GLatLng(52.3623928724539, 16.891822814941406), 13);
  } else {
    var center = new GLatLng(latCenter,lngCenter);
    map.setCenter(center, map.getBoundsZoomLevel(bounds));
  }
  map.closeInfoWindow(); 
}
function wheelevent(e){
  if (!e){
    e = window.event
  }
  if (e.preventDefault){
    e.preventDefault()
  }
  e.returnValue = false;
}
GEvent.addDomListener(map.getContainer(), "DOMMouseScroll", wheelevent);
map.getContainer().onmousewheel = wheelevent; 


function esasZoomOut(){
  var paragraphs = map.getContainer().getElementsByTagName('p').length;
  if(paragraphs > 6){
    map.zoomOut();
  }
}
interval = setInterval("esasZoomOut()",500);

function createMarker(kraj,point,tytul,html_1,html_2,zdjecie,ikona,markerid, lng, lat){
  var marker =  new GMarker(point, {icon: baseIcon}); 
  marker.tooltip = '<div class="tooltip">'+tytul+'<\/div>';
  marker.mykraj=kraj;
  marker.mytytul=tytul;
  marker.myid=markerid;
  gmarkers.push(marker);
  if (zdjecie!='') { var zdjecie_k='<img src="'+zdjecie+'" class="fll"  width="100" alt="" />'; var x='';}
  else {var zdjecie_k=''; var x='2';}
  var infoTabs = [  
  new GInfoWindowTab("Info", zdjecie_k+'<div class="infobox'+x+'"><br />'+html_1+'<br /><a href="#" onclick="javascript:zoomin('+(markerid)+')">Zbliż</a> <a href="#" onclick="javascript:zoomout('+(markerid)+')">Oddal</a></div>'),  
  new GInfoWindowTab("Telefony", '<div class="infobox"><br />'+html_2+'</div>')  
 ];  
  fit();
  GEvent.addListener(marker,'click',function(){
    marker.openInfoWindowTabsHtml(infoTabs);
  }); 
  //  ======  The new marker "mouseover" and "mouseout" listeners  ======
    GEvent.addListener(marker,"mouseover", function() {
    showTooltip(marker);
  });        
    GEvent.addListener(marker,"mouseout", function() {
    tooltip.style.visibility="hidden"
    });     

  return marker;
}

function myclick(i) {
  GEvent.trigger(gmarkers[i],"click");
}
function zoomin(i){
  map.setCenter(gmarkers[i].getPoint(), 16);
  map.panBy(new GSize(0, 140)) ;
  return false;
}
function zoomout(i){
  map.setCenter(gmarkers[i].getPoint(), 4);
  map.panBy(new GSize(0, 140)) ;
  return false;
}
function pokazkraj(){
 var kraj= document.getElementById('krajj').value;
  var bounds = new GLatLngBounds();
  for(var i=0;i<gmarkers.length;i++){
  if (gmarkers[i].mykraj==kraj) {
  gmarkers[i].setImage('img/map_green.png');
  bounds.extend(gmarkers[i].getPoint());
  } else gmarkers[i].setImage(baseIcon.image);
  }
  var lngCenter = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) / 2;
  var latCenter = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) / 2;
  if(lngCenter!=0) {
 //   map.setCenter(new GLatLng(52.3623928724539, 16.891822814941406), 13);
  //} else {
    var center = new GLatLng(latCenter,lngCenter);
    map.setCenter(center, map.getBoundsZoomLevel(bounds));
    map.closeInfoWindow(); 
  }

}
// Odczyt danych AJAX
function get_marks() {
  var request = GXmlHttp.create();
  //var xml_url ='strony_mapa.php';
  var xml_url='strony.xml';
  request.open("GET", xml_url, true);
  request.onreadystatechange = function () {
    if (request.readyState == 4) {
      var xmlDoc = request.responseXML;
	  
      // obtain the array of markers and loop through it
      var markers = xmlDoc.documentElement.getElementsByTagName("marker");
      for (var i = 0; i < markers.length; i++) {
        // obtain the attribues of each marker
        var lng = parseFloat(markers[i].getAttribute("lng"));
        var lat = parseFloat(markers[i].getAttribute("lat"));
        var point =  new GPoint(lng, lat);
        var html_1 = markers[i].getAttribute("html_1");
        var kraj = markers[i].getAttribute("kraj");
        var html_2 = markers[i].getAttribute("html_2");
        var zdjecie = markers[i].getAttribute("zdjecie");
        var label = markers[i].getAttribute("label");
        var ico = markers[i].getAttribute("ico");
        var markerid = markers[i].getAttribute("mid");
        // create the marker
        var znalezione=false;
        for (var z=0; z<gmarkers.length; z++) {
          if (gmarkers[z].myid == markerid) { znalezione=true;}
        }
        if (znalezione==false){
          var marker = createMarker(kraj, point, label, html_1, html_2, zdjecie, ico,markerid, lng,lat);
          map.addOverlay(marker);
        }
   //     fit();
      }
    }
  }
 //  document.getElementById("side_bar").innerHTML = side_bar_html;
  request.send(null);
  return 1;
}

function zwin_rozwin_zakladke(kraj) {
  if (kraj_selected > 0) {
    for (var i = 0; i < pozycje.length; i++) {
      if (document.getElementById('poz_' + pozycje[i])!=null) {
        document.getElementById('poz_' + pozycje[i]).lang =='off';}
      }
    document.getElementById('menu_' + kraj_selected).style.display = 'none';
    
    //document.getElementById('menuico_' + kraj_selected).src = './gmap/arrowr.gif';
  }
  if (kraj_selected != kraj) {
    document.getElementById('menu_' + kraj).style.display = 'block';
    document.getElementById('menu_' + kraj).style.background = 'none white';
    if (document.getElementById('menu_' + kraj).innerHTML.length == 0) {
      document.getElementById('menu_' + kraj).innerHTML = '<i> &nbsp; Ładuję dane</i>';
    }
    //document.getElementById('menuico_' + kraj).src = './gmap/arrowd.gif';
    kraj_selected = kraj;
    get_marks(kraj);
  } else {
    kraj_selected = 0;
  }
}

      function showTooltip(marker) {
      	tooltip.innerHTML = marker.tooltip;
	var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
	var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
	var anchor=marker.getIcon().iconAnchor;
	var width=marker.getIcon().iconSize.width;
	var height=tooltip.clientHeight;
	var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height)); 
	pos.apply(tooltip);
	tooltip.style.visibility="visible";
      }

      // ===== This function is invoked when the mouse goes over an entry in the side_bar =====
      // It launches the tooltip on the icon      
      function mymouseover(i) {
        showTooltip(gmarkers[i])
      }
      // ===== This function is invoked when the mouse leaves an entry in the side_bar =====
      // It hides the tooltip      
      function mymouseout() {
	tooltip.style.visibility="hidden";
      }

