/*******************************************************************************
 * Javascript für twGmap01einfach
 ******************************************************************************/

var elementId = "google_maps";  // muss im html an ein <div> als id vergeben werden
var lat       = "47.559";  // Breitengrad (Latitude) z.B: 51.041
var lon       = "8.897";  // Längengrad (Longitude) z.B: 13.748
var zoom      = 15;        // einen Wert von 1 bis ca 17 (nicht in "" setzen)
var sidebarId      = "google_mapsSidebar"
var sidebarHtml    = "";
var sidebarMarkers = [];
var sidebarCount   = 0;

var icon = new GIcon();
icon.image = 'http://www.vbcfrauenfeld.ch/fileadmin/template/markers/image.png';
icon.printImage = 'http://www.vbcfrauenfeld.ch/fileadmin/template/markers/printImage.gif';
icon.mozPrintImage = 'http://www.vbcfrauenfeld.ch/fileadmin/template/markers/mozPrintImage.gif';
icon.iconSize = new GSize(30,30);
icon.shadow = 'http://www.vbcfrauenfeld.ch/fileadmin/template/markers/shadow.png';
icon.transparent = 'http://www.vbcfrauenfeld.ch/fileadmin/template/markers/transparent.png';
icon.shadowSize = new GSize(45,30);
icon.printShadow = 'http://www.vbcfrauenfeld.ch/fileadmin/template/markers/printShadow.gif';
icon.iconAnchor = new GPoint(15,30);
icon.infoWindowAnchor = new GPoint(15,0);
icon.imageMap = [29,0,29,1,29,2,29,3,29,4,29,5,29,6,29,7,29,8,29,9,29,10,29,11,29,12,29,13,29,14,29,15,29,16,29,17,29,18,29,19,29,20,29,21,29,22,29,23,29,24,29,25,29,26,29,27,29,28,29,29,0,29,0,28,0,27,0,26,0,25,0,24,0,23,0,22,0,21,0,20,0,19,0,18,0,17,0,16,0,15,0,14,0,13,0,12,0,11,0,10,0,9,0,8,0,7,0,6,0,5,0,4,0,3,0,2,0,1,0,0];
/**
 * Prüft auf kompatiblen Browser und vorhandene Variablen und ruft die
 * Funktion auf, die die GoogleMap erstellt.
 */
function google_mapsLoad() {
	if (GBrowserIsCompatible()) {
		if (!document.getElementById(elementId)) {
			alert("Fehler: das Element mit der id "+ elementId+ " konnte nicht auf dieser Webseite gefunden werden!");
			return false;
		} else {
			if (lat=="" || isNaN(lat)) {
				lat = 51.041;
				alert("Fehler: Der Breitengrad(lat) wurde im Skript nicht korrekt eingetragen!\nEin Defaultwert wird deshalb benutzt!");
			}
			if (lon=="" || isNaN(lon)) {
				lon = "13.748";
				alert("Fehler: Der Längengrad(lon) wurde im Skript nicht korrekt eingetragen!\nEin Defaultwert wird deshalb benutzt!");
			}
			if (typeof zoom == "undefined") {
				zoom = 3;
				alert("Fehler: Die Zoomstufe wurde im Skript nicht korrekt eingetragen!\nEin Defaultwert wird deshalb benutzt!");
			}
			machTwGmap(elementId, lat, lon, zoom);
			
			if (!document.getElementById(sidebarId)) {
  alert("Fehler: die Sidebar mit der id "+ sidebarId+ " konnte nicht auf dieser Webseite gefunden werden!");
  return false;
} else {
  document.getElementById(sidebarId).innerHTML = sidebarHtml;
}
		}
	}
}


/**
 * Erstellt die GoogleMap in dem <div>-Bereich mit der übergebenen id
 * @param {Object} id   -im div-Bereich mit dieser id wird die Map dargestellt
 * @param {Object} lat  -Breitengrad 
 * @param {Object} lon  -Längengrad
 * @param {Object} zoom -Zoomstufe 1 bis 17 (ganze Welt bis kleiner Ausschnitt)
 */
function machTwGmap(id, lat, lon, zoom) {
	// die Map (für das div mit der id="...")
	var map = new GMap2(document.getElementById(id));
	// mit Zoom (auch noch: GSmallMapControl, GLargeMapControl, GSmallZoomControl, GScaleControl)
	map.addControl(new GSmallMapControl());
	// mit Typ-Auswahl (auch noch: GMapTypeControl, GHierarchicalMapTypeControl, GOverviewMapControl)
	map.addControl(new GOverviewMapControl()); 
	// ((Breitengrad, Längengrad), Zoomstufe, G_NORMAL_MAP/G_SATELLITE_MAP/G_HYBRID_MAP)
	map.setCenter(new GLatLng(lat, lon), zoom, G_NORMAL_MAP);
	// Marker setzen mit eigener Marker-Funktion
	map = setTwMarkers(map);
}

function machZeileInTwGmapSidebar(text, marker) {
  sidebarMarkers[sidebarCount] = marker;
  sidebarHtml += '<a href="twGmapSidebarIsClicked(' + sidebarCount + ')">' + text + '</a>';
  sidebarCount ++;
}

function google_mapsSidebarIsClicked(i) {
  GEvent.trigger(sidebarMarkers[i], "click");
}

/**
 * Erstellt alle Marker für die übergebene Google Map.
 * (Ruft intern für jeden Marker eine eigene Funktion auf)
 * @param {Object} map
 */
function setTwMarkers(map) {
	var marker01 = machTwMarker01();
	var marker02 = machTwMarker02();
	var marker03 = machTwMarker03();
	var marker04 = machTwMarker04();
	var marker05 = machTwMarker05();
	var marker06 = machTwMarker06();
	var marker07 = machTwMarker07();
	map.addOverlay(marker01);
	map.addOverlay(marker02);
	map.addOverlay(marker03);
	map.addOverlay(marker04);
	map.addOverlay(marker05);
	map.addOverlay(marker06);
	map.addOverlay(marker07);
	
	return map;
}


function machTwMarker01() {
	var point = new GPoint(8.884401, 47.557494);
	var marker = new GMarker(point, icon);
	var html   = "<b>Turnhalle Oberwiesen</b><br />Oberwiesenstrasse 40 <br />8500 Frauenfeld";
	GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(html)});
	
	// nur wenn ein Verweis auf diesen Marker in der Sidebar angezeigt werden soll
	machZeileInTwGmapSidebar("Turnhalle Oberwiesen", marker);
	
	return marker;
}

function machTwMarker02() {
	var point = new GPoint(8.884549, 47.570909);
	var marker = new GMarker(point, icon);
	var html   = "<b>Sporthalle Auenfeld</b><br />Haubitzenstrasse<br />8500 Frauenfeld";
	GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(html)});
	
	// nur wenn ein Verweis auf diesen Marker in der Sidebar angezeigt werden soll
	machZeileInTwGmapSidebar("Turnhalle Auenfeld", marker);
	
	return marker;
}

function machTwMarker03() {
	var point = new GPoint(8.900498, 47.55525);
	var marker = new GMarker(point, icon);
	var html   = "<b>St&auml;dtische Halle</b><br />Spannerstrasse 3<br />8500 Frauenfeld";
	GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(html)});
	
	// nur wenn ein Verweis auf diesen Marker in der Sidebar angezeigt werden soll
	machZeileInTwGmapSidebar("St&auml;dtische Turnhalle", marker);
	
	return marker;
}

function machTwMarker04() {
	var point = new GPoint(8.892746, 47.558955);
	var marker = new GMarker(point, icon);
	var html   = "<b>Turnhalle Kurzdorf</b><br />Rheinstrasse 32<br />8500 Frauenfeld";
	GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(html)});
	
	// nur wenn ein Verweis auf diesen Marker in der Sidebar angezeigt werden soll
	machZeileInTwGmapSidebar("Turnhalle Kurzdorf", marker);
	
	return marker;
}

function machTwMarker05() {
	var point = new GPoint(8.904483, 47.555547);
	var marker = new GMarker(point, icon);
	var html   = "<b>Beachfelder Kantonsschule</b><br />(2 Beachfelder)<br />8500 Frauenfeld";
	GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(html)});
	
	// nur wenn ein Verweis auf diesen Marker in der Sidebar angezeigt werden soll
	machZeileInTwGmapSidebar("<br />Beachfelder Kantonsschule", marker);
	
	return marker;
}

function machTwMarker06() {
	var point = new GPoint(8.895696, 47.550264);
	var marker = new GMarker(point, icon);
	var html   = "<b>Beachfeld Schwimmbad</b><br />(3 Beachfelder)<br />8500 Frauenfeld";
	GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(html)});
	
	// nur wenn ein Verweis auf diesen Marker in der Sidebar angezeigt werden soll
	machZeileInTwGmapSidebar("Beachfelder Schwimmbad", marker);
	
	return marker;
}

function machTwMarker07() {
	var point = new GPoint(8.884549, 47.570909);
	var marker = new GMarker(point, icon);
	var html   = "<b>Beachfeld Auenfeld</b><br />(1 Beachfeld)<br />8500 Frauenfeld";
	GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(html)});
	
	// nur wenn ein Verweis auf diesen Marker in der Sidebar angezeigt werden soll
	machZeileInTwGmapSidebar("Beachfeld Auenfeld", marker);
	
	return marker;
}

/**
 * Schreibt den HTML-Code für eine Zeile(Verweis) in die globale Variable 'sidebarHtml'.
 * Dabei wird auch gleich der übergebene Marker in das Marker-Array eingefügt,
 * und der Zähler (zählt alle Marker) hochgezählt.
 * @param {Object} text   -der anzuzeigende Text für diese Zeile in der Sidebar
 * @param {Object} marker -der Marker, auf den der Verweis zeigt
 */
function machZeileInTwGmapSidebar(text, marker) {
	sidebarMarkers[sidebarCount] = marker;
	sidebarHtml += '<a href="javascript:twGmapSidebarIsClicked(' + sidebarCount + ')">' + text + '</a><br>';
	sidebarCount ++;
}


/**
 * Event-Handler für Klick auf Marker, öffnet das dazugehörige Info-Fenster.
 * @param {Object} i -ein bestimmter Marker aus dem Marker-Array
 */
function twGmapSidebarIsClicked(i) {
	GEvent.trigger(sidebarMarkers[i], "click");
}
