// this variable will collect the html which will eventually be placed in the side_bar
var side_bar_html = "";
    
// arrays to hold copies of the markers and html used by the side_bar
// because the function closure trick doesnt work there
var gmarkers = [];
var i = 0;
var map;
var ovmap;
	
function positionOverview(x,y) 
{
  var omap=document.getElementById("map_overview");
  //omap.style.left = x+"px";
  //omap.style.top = y+"px";
        
  omap.firstChild.style.border = "1px solid darkgray";

  omap.firstChild.firstChild.style.left="2px";
  omap.firstChild.firstChild.style.top="2px";
  omap.firstChild.firstChild.style.width="183px";
  omap.firstChild.firstChild.style.height="183px";
}


function createMarker(point, info, link, a_icon, a_shadowicon) 
{
  // Create our "tiny" marker icon
  var icon = new GIcon();
  if (!a_icon)
    icon.image = "http://maps.google.com/mapfiles/kml/pal3/icon56.png";
   else
    {
      icon.image = a_icon;
    }	

  if (!a_shadowicon)
    icon.shadow = "http://maps.google.com/mapfiles/kml/pal3/icon56_shadow.png";
   else
    icon.shadow = a_shadowicon;


  icon.iconSize = new GSize(32, 32);
  icon.shadowSize = new GSize(32, 32);
  icon.iconAnchor = new GPoint(16, 16);
  icon.infoWindowAnchor = new GPoint(16, 12);

  var marker = new GMarker(point, icon);
  GEvent.addListener(marker, "mouseover", function() {
    marker.openInfoWindowHtml(info);
  });

  GEvent.addListener(marker, "mouseout", function() {
    map.getInfoWindow().hide();
  });

  if (link!="")
  GEvent.addListener(marker, "click", function() {
    window.open(link);
  });

  gmarkers[i] = marker;
  side_bar_html += '<a href="javascript:myclick(' + i + ')">' + info + '</a><br>';
  i++;

  return marker;
}


function myclick(i) 
{
        GEvent.trigger(gmarkers[i], "mouseover");
}

function load_map(minzoom, maxzoom, curzoom, centerx, centery, Title, Link, HS_file) 
{
      if (GBrowserIsCompatible()) 
      {
	alert(document.getElementById("map"));
        map = new GMap2(document.getElementById("map"));
	map.enableDoubleClickZoom();
	map.enableContinuousZoom();
	map.addControl(new GSmallMapControl());
	//map.addControl(new GLargeMapControl());

        // ====== Restricting the range of Zoom Levels =====
        var mt = map.getMapTypes();
        for (var i=0; i<mt.length; i++) 
	{
          mt[i].getMinimumResolution = function() {return minzoom;}
          mt[i].getMaximumResolution = function() {return maxzoom;}
        }
	
	var point=new GLatLng(centerx, centery);
        map.setCenter(point, curzoom, G_HYBRID_MAP);

        // ==== OVERVIEW MAP ====
        var ovcontrol = new GOverviewMapControl(new GSize(190,190)); 
        //map.addControl(ovcontrol);
      
        //ovmap = ovcontrol.getOverviewMap();
      
        //GEvent.addListener(ovmap,"click",function() {alert("you clicked the overview");} );

        //setTimeout("positionOverview(558,254)",1);
        //setTimeout("ovmap.setMapType(G_HYBRID_MAP);",1);
        // === END OVERVIEW ===

  	if (Title)
	   { 
		var marker=createMarker(point, Title, Link); 
            	map.addOverlay(marker);
	   }

        // === placing hotspots =====
        var request = GXmlHttp.create();
        request.open("GET", HS_file, true);
        request.onreadystatechange = function() 
	{
         if (request.readyState == 4) 
	 {
          var xmlDoc = request.responseXML;
          var markers = xmlDoc.documentElement.getElementsByTagName("marker");
          for (var i = 0; i < markers.length; i++) 
	  {
            var lat = parseFloat(markers[i].getAttribute("lat"));
            var lng = parseFloat(markers[i].getAttribute("lng"));
            var point = new GLatLng(lat,lng);
            //var html = markers[i].getAttribute("html");
	    var html = GXml.value(markers[i].getElementsByTagName("infowindow")[0]);
            var label = markers[i].getAttribute("label");
            var clicklink = markers[i].getAttribute("clicklink");
            var icon = markers[i].getAttribute("icon");
            var shadow_icon = markers[i].getAttribute("shadowicon");

            var marker = createMarker(point, html, clicklink, icon, shadow_icon);
            map.addOverlay(marker);
          }

          var polygons = xmlDoc.documentElement.getElementsByTagName("polygon");
	  var points_coord=[];
          for (var i = 0; i < polygons.length; i++) 
	  {
            var pointsStr = polygons[i].getAttribute("points");
            var pointsArr = pointsStr.split(" ");
            for (var q = 0; q < pointsArr.length; q++) 
	     {
		var t=pointsArr[q].split(",");
		
		points_coord[q]=new GLatLng(parseFloat(t[1]), parseFloat(t[0]));
	     }

            var strokeColor = polygons[i].getAttribute("strokeColor");
            var strokeWeight = parseFloat(polygons[i].getAttribute("strokeWeight"));
            var strokeOpacity = parseFloat(polygons[i].getAttribute("strokeOpacity"));
            var fillColor = polygons[i].getAttribute("fillColor");
            var fillOpacity = parseFloat(polygons[i].getAttribute("fillOpacity"));
	
	    var poly=new GPolygon(points_coord, strokeColor, strokeWeight, strokeOpacity, fillColor, fillOpacity);
            map.addOverlay(poly);
	  }
         }
      }
      request.send(null);
      
      //document.getElementById("side_bar").innerHTML = side_bar_html;
     }
     else
     {
        alert("Извините,  Google Maps не совместимы с данным браузером.");
     }

}


function OpenGoogleMap(ZoomLevel, Lat, Lng, Title, Link, HS_file)
{
  load_map(10, 18, ZoomLevel, Lat, Lng, Title, Link, HS_file);
}
