// MapFunctions.js for kletterVZ.de

// CONSTANTS
var centerLatitude = 51.28940590271679;		// CENTER GERMANY
var centerLongitude = 11.66748046875;		// CENTER GERMANY
var startZoom = 6;							// CENTER GERMANY
var initMapType = G_NORMAL_MAP;

// VARIABLES
var map;
var temp_marker;
var marker_suche;

function viewportWidth()  {
    return self.innerWidth || (document.documentElement.clientWidth || document.body.clientWidth);
}

function viewportHeight()   {
    return self.innerHeight || (document.documentElement.clientHeight || document.body.clientHeight);
}
  
function viewportSize()  {
document.getElementById('map').style.height = (this.viewportHeight() - 121) + "px";
document.getElementById('info-frame').style.height = (this.viewportHeight() - 121) + "px";
}

function zoomOut()	{
		map.setCenter(new GLatLng(centerLatitude, centerLongitude), startZoom, initMapType );
}

function zoomToPoint(lon, lat)	{
		map.setCenter(new GLatLng(lat, lon), 12);
		infobar = document.getElementById("info-frame");
		infobar.src = 'server_details.php?lon='+lon+'&lat='+lat;
		updateMarkers();
}

function zoomToGebiet(lon, lat)	{
		map.setCenter(new GLatLng(lat, lon), 9);
		updateMarkers();
}

function initNewMarker(id_lat, id_lon)	{
	GEvent.addListener(map, "click", function(overlay, latlng) {
		if (temp_marker) {
			map.removeOverlay(temp_marker);
		}
		temp_marker = new GMarker(latlng)
		map.addOverlay(temp_marker);
		if (id_lat)	{
			oLat = document.getElementById(id_lat);
			oLat.value = latlng.y;
			oLon = document.getElementById(id_lon);
			oLon.value = latlng.x;
		}
	});
}

function setMarker(lat, lon)	{
	temp_marker = new GMarker(lat, lon)
	map.addOverlay(temp_marker);
}

function showAddress(address) {
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " konnte nicht gefunden werden!");
            } else {

			  if (marker_suche)	{
				  	map.removeOverlay(marker_suche);
			  }
              map.setCenter(point, 13);
              marker_suche= new GMarker(point, icon_suche);
              map.addOverlay(marker_suche);
              marker_suche.openInfoWindowHtml("<div style=\"font-size:11px;\"\"><b>Ihr gesuchter Standort: </b><br />"+address+"</div>");
            }
          }
        );
      }
    }

function updateMarkers() {
	map.clearOverlays();

	var bounds = map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();
	var getVars = 'ne=' + northEast.toUrlValue()
	+ '&sw=' + southWest.toUrlValue();

	var request = GXmlHttp.create();
	request.open('GET', 'server.php?'+getVars, true);
	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			var jscript = request.responseText;
			var points;
			eval(jscript);
			var j = 0;
			for (i in points) {
				var point = new GLatLng(points[i].lat,points[i].lng);
				marker = createMarker(point,points[i].type, points[i].titel);
				map.addOverlay(marker);
			}
		}
	}
	request.send(null);
}

function createMarker(point, type, titel) {
var iconSingle = new GIcon();
iconSingle.image = "http://www.klettervz.de/grafik/map_icon_climb.png";
iconSingle.iconSize = new GSize(20, 34);
iconSingle.iconAnchor = new GPoint(6, 20);
iconSingle.infoWindowAnchor = new GPoint(6, 1);

	if(type=='c') {
		var marker = new GMarker(point, { icon:iconSingle });
	} else {
		 var marker= new GMarker(point, { icon:iconSingle });
	
     	GEvent.addListener(marker, 'click', function() {
	
		map.setCenter(point);
	
		var markerHTML = '<div style=" text-align:center;"><b>'+titel+'</b></div>';
	
		marker.openInfoWindowHtml(markerHTML);
		infobar = document.getElementById("info-frame");
		infobar.src = 'server_details.php?lon='+marker.getPoint().lng()+'&lat='+marker.getPoint().lat();
	});
	}
	return marker;
}

window.onload = init;
window.onunload = GUnload;
