/*******************************************************************************
 * Javascript für twGmap05Sidebar - Version03
 ******************************************************************************/

var gmapId = "twGmap";  // id des GoogleMap-div's im html-code
var lat    = "52.15245058";  // Breitengrad (Latitude) z.B: 51.041
var lon    = "11.61598206";  // Längengrad (Longitude) z.B: 13.748
var zoom   = 11;        // Zoom-Wert von 1 bis ca 17 (nicht in "")(1=ganzeWelt)
var sidebarId      = "twGmapSidebar"  // id des Sitemap-div's im html-code
var sidebarHtml    = "";              // HTML-Code für die gesamte Sidebar
var sidebarMarkers = [];              // Array für die Marker
var sidebarCount   = 0;               // Zähler für die Marker (= Zeile in der Sidebar)
var sidebarZeichen = String.fromCharCode("A".charCodeAt(0) - 1);  // Buchstabe für das Marker-Icon
var sidebarLastLinkid;                // id des zuletzt angeklickten Markers/Verweises


/**
 * Prüft auf kompatiblen Browser und vorhandene Variablen und ruft die
 * Funktion auf, die die GoogleMap erstellt.
 */
function twGmapLoad() {
	if (GBrowserIsCompatible()) {
		// die Google Map (twGmap)
		if (!document.getElementById(gmapId)) {
			alert("Fehler: die Google Map mit der id "+ gmapId+ " 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(gmapId, lat, lon, zoom);			
		}
		// die Sidebar (twGmapSidebar)
		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));
	
	map.addControl(new GMapTypeControl());
	map.addControl(new GLargeMapControl());
	map.addControl(new GOverviewMapControl());
	map.enableContinuousZoom();
	map.enableDoubleClickZoom();
	
	// ((Breitengrad, Längengrad), Zoomstufe, G_NORMAL_MAP/G_SATELLITE_MAP/G_HYBRID_MAP)
	map.setCenter(new GLatLng(lat, lon), zoom, G_HYBRID_MAP);
	
	// Marker setzen mit eigener Marker-Funktion
	map = setTwMarkers(map);
	
	// Sidebar-Zeile wieder demarkieren, wenn ein Infofenster geschlossen wird
	GEvent.addListener(map,"infowindowclose", function() {
		document.getElementById(sidebarLastLinkid).style.background="#fdf9ec";
	});
}


/**
 * 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();
	map.addOverlay(marker01);
	map.addOverlay(marker02);
	map.addOverlay(marker03);
	map.addOverlay(marker04);
	map.addOverlay(marker05);
	map.addOverlay(marker06);
	map.removeMapType(G_HYBRID_MAP);	
	return map;
}


function machTwMarker01() {
	var point = new GPoint(11.6127093, 52.126834);
	var icon = createIcon();
	var marker = new GMarker(point, {icon:icon});
	var html   = "<b>Sunny Fahrschule</b><br/>Lessingstraße 66<br/>39108 Magdeburg";
	var linkid = "link"+sidebarCount;
		
	GEvent.addListener(marker, "click", function() { 
		marker.openInfoWindowHtml(html);
		document.getElementById(linkid).style.background="yellow"; 
		sidebarLastLinkid=linkid;
	});  	
	GEvent.addListener(marker, "mouseover", function() { 
		document.getElementById(linkid).style.background="yellow";
	});
	GEvent.addListener(marker, "mouseout", function() { 
		document.getElementById(linkid).style.background="";
	});

	machZeileInTwGmapSidebar("Lessingstraße 66", marker, linkid);      
	
	return marker;
}

function machTwMarker02() {
	var point = new GPoint(11.6032987, 52.1112081);
	var icon = createIcon();
	var marker = new GMarker(point, {icon:icon});
	var html   = "<b>Sunny Fahrschule</b><br/>Halberstädter Str. 105<br/>Magdeburg";
	var linkid = "link"+sidebarCount;   
		
	GEvent.addListener(marker, "click", function() { 
		marker.openInfoWindowHtml(html);
		document.getElementById(linkid).style.background="yellow";
		sidebarLastLinkid=linkid;
	});  	
	GEvent.addListener(marker, "mouseover", function() { 
		document.getElementById(linkid).style.background="yellow";
	});
	GEvent.addListener(marker, "mouseout", function() { 
		document.getElementById(linkid).style.background="";
	});

	machZeileInTwGmapSidebar("Halberstädter Str. 105", marker, linkid);      
	
	return marker;
}

function machTwMarker03() {
	var point = new GPoint(11.6407548, 52.1061331);
	var icon = createIcon();
	var marker = new GMarker(point, {icon:icon});
	var html   = "<b>Sunny Fahrschule</b><br/>Schönebecker Str. 40<br/>39104 Magdeburg";
	var linkid = "link"+sidebarCount;
		
	GEvent.addListener(marker, "click", function() { 
		marker.openInfoWindowHtml(html);
		document.getElementById(linkid).style.background="yellow";
		sidebarLastLinkid=linkid; 
	});  	
	
	GEvent.addListener(marker, "mouseover", function() { 
		document.getElementById(linkid).style.background="yellow";
	});
	GEvent.addListener(marker, "mouseout", function() { 
		document.getElementById(linkid).style.background="";
	});

	machZeileInTwGmapSidebar("Schönebecker Str. 40", marker, linkid);           
	
	return marker;
}

function machTwMarker04() {
	var point = new GPoint(11.6493308, 52.0977882);
	var icon = createIcon();
	var marker = new GMarker(point, {icon:icon});
	var html   = "<b>Sunny Fahrschule</b><br/>Platz der Freundschaft / im SFC (Fermersleben)<br/>Magdeburg";
	var linkid = "link"+sidebarCount;
		
	GEvent.addListener(marker, "click", function() { 
		marker.openInfoWindowHtml(html);
		document.getElementById(linkid).style.background="yellow";
		sidebarLastLinkid=linkid;
	});  	
	GEvent.addListener(marker, "mouseover", function() { 
		document.getElementById(linkid).style.background="yellow";
	});
	GEvent.addListener(marker, "mouseout", function() { 
		document.getElementById(linkid).style.background="";
	});
	
	machZeileInTwGmapSidebar("Platz der Freundschaft", marker, linkid);           
	
	return marker;
}

function machTwMarker05() {
	var point = new GPoint(11.5535248, 52.206387);
	var icon = createIcon();
	var marker = new GMarker(point, {icon:icon});
	var html   = "<b>Sunny Fahrschule</b><br/>Mausesteig 2<br/>Meitzendorf";
	var linkid = "link"+sidebarCount;
		
	GEvent.addListener(marker, "click", function() { 
		marker.openInfoWindowHtml(html);
		document.getElementById(linkid).style.background="yellow";
		sidebarLastLinkid=linkid;
	});  	
	GEvent.addListener(marker, "mouseover", function() { 
		document.getElementById(linkid).style.background="yellow";
	});
	GEvent.addListener(marker, "mouseout", function() { 
		document.getElementById(linkid).style.background="";
	});
	
	machZeileInTwGmapSidebar("Meitzendorf Mausesteig 2", marker, linkid);           
	
	return marker;
}

function machTwMarker06() {
	var point = new GPoint(11.6260255, 52.2040278);
	var icon = createIcon();
	var marker = new GMarker(point, {icon:icon});
	var html   = "<b>Sunny Fahrschule</b><br/>Ernst-Thälmann Str.12<br/>39179 Barleben";
	var linkid = "link"+sidebarCount;
		
	GEvent.addListener(marker, "click", function() { 
		marker.openInfoWindowHtml(html);
		document.getElementById(linkid).style.background="yellow";
		sidebarLastLinkid=linkid;
	});  	
	GEvent.addListener(marker, "mouseover", function() { 
		document.getElementById(linkid).style.background="yellow";
	});
	GEvent.addListener(marker, "mouseout", function() { 
		document.getElementById(linkid).style.background="";
	});
	
	machZeileInTwGmapSidebar("Barleben Ernst-Thälmann Str.12", marker, linkid);           
	
	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, linkid) {
	sidebarMarkers[sidebarCount] = marker;
	sidebarHtml += '<div id="'+ linkid+ '" style="padding:5px 0px;">';
	sidebarHtml += '<a href="javascript:twGmapSidebarIsClicked(' + sidebarCount + ')" style="padding-left:5px;">' + text + '</a><br>';
	sidebarHtml += '</div>';
	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");
}

/**
 * Custom Icon
 */
function createIcon() {
	var myIcon = new GIcon();
	myIcon.image = 'img/markers/image.png';
	myIcon.shadow = 'img/markers/shadow.png';
	myIcon.iconSize = new GSize(36,24);
	myIcon.shadowSize = new GSize(48,24);
	myIcon.iconAnchor = new GPoint(0,24);
	myIcon.infoWindowAnchor = new GPoint(18,0);
	myIcon.printImage = 'img/markers/printImage.gif';
	myIcon.mozPrintImage = 'img/markers/mozPrintImage.gif';
	myIcon.printShadow = 'img/markers/printShadow.gif';
	myIcon.transparent = 'img/markers/transparent.png';
	myIcon.imageMap = [22,0,31,1,32,2,33,3,34,4,34,5,33,6,32,7,31,8,32,9,33,10,33,11,34,12,35,13,35,14,35,15,35,16,34,17,31,18,30,19,31,20,31,21,31,22,30,23,5,23,4,22,3,21,3,20,3,19,3,18,1,17,0,16,0,15,0,14,0,13,0,12,0,11,1,10,1,9,2,8,2,7,1,6,0,5,0,4,0,3,0,2,1,1,10,0];
	
	return myIcon;
}




