
/*
*********************************************
* Google Maps functions
* (c) Heiko Rutar
*
*********************************************
*/


/*

Allgemein

*/

function blockMap(message) {
	$.extend($.blockUI.defaults.overlayCSS, { backgroundColor: '#fff' });
	$.extend($.blockUI.defaults.elementMessageCSS, { backgroundColor: '#fff', border : '2px solid #ffcc66' });
	$("div.mapmask").unblock().block('<span id="dommessage" style="font-size:12px;font-family:Verdana, Arial;"><img id="msgIndicator" src="/media/shared/indicator_white.gif" style="width:16px;height:16px;" align="absmiddle">&nbsp;<span id="msgText">'+message+'</span></span>');
}

function blockError(message) {
	$('#dommessage').parent('.blockUI').css({ backgroundColor: "#fff", border : '2px solid #f33'});
	changeBlockMessage(message, false);
}

function blockSuccess(message) {
	$('#dommessage').parent('.blockUI').css({ backgroundColor: "#fff", border : '2px solid #009933'});
	changeBlockMessage(message, false);
}

function changeBlockMessage(message, indicator) {
	if (indicator) {
		$('#msgIndicator').show();
	}
	else {
		$('#msgIndicator').hide();
	}
	$('#msgText').empty();
	$('#msgText').append(message);
}

function unBlockMap() {
	$("div.mapmask").unblock();
}



/*

Übersichtskarte Leben

*/


var mapIcon;


function initMapIcon() {
	mapIcon = new GIcon();
	mapIcon.image = "/media/layout/100_mn.png";
	mapIcon.shadow = "/media/layout/100_bg.png";
	mapIcon.transparent = "/media/layout/100_fg.png";
	mapIcon.iconSize = new GSize(20, 34);
	mapIcon.iconAnchor = new GPoint(9, 28);
	mapIcon.infoWindowAnchor = new GPoint(10, 9);
}




var map;
var ortLink;

function loadCityMap() {
	if (GBrowserIsCompatible()) {

		initMapIcon();
		
		blockMap(locales.lade_orte);
		map = new GMap2(document.getElementById("gmap"));
		GEvent.addListener(map, "load", delayedLoadMarkers);
		
		map.setCenter(new GLatLng(51.2894, 10.4370), 6); // mitte von deutschland
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl());
		map.addControl(new GOverviewMapControl());
		GEvent.addListener(map, "click", mapClick);
		map.savePosition();
	}
}

function delayedLoadMarkers() {
	setTimeout('loadMarkers()', 2000);

}

function loadMarkers() {

	$.getJSON('/?gajax=1&action=getcities&lang='+locales.lang, function(cityData) {
		ortLink = cityData.link;
		var markerData = cityData.m;
		for (var i = 0, len = markerData.length; i < len; i++) {
			var m = markerData[i];
			createMarker(m[0], m[1], m[2], m[3], m[4], m[5]); 
		}
		unBlockMap();
	});

}

function createMarker(id, lat, lng, name, zoomLevel, ortcid) {

	// russisch kein tooltip, weil windows-1251
	var opts = {icon : mapIcon};
	if (locales.lang != 'ru') {
		opts.title = name;
	}
	var marker = new GMarker(new GLatLng(lat, lng), opts);
	marker.ortId = id;
	marker.ortCId = ortcid;
	marker.ortName = name;
	marker.zoomLevel = zoomLevel;
	map.addOverlay(marker);

}


function resetMap() {
	map.setCenter(new GLatLng(51.2894, 10.4370), 6); // mitte von deutschland
	map.closeInfoWindow();
}

function mapClick(marker) {
	if (marker != null) {
		if (marker.ortId != null) {

			var whichmini = "mini"+marker.ortId;

			var link = ortLink + marker.ortCId + '.html';
			var ortlink = '<b><a class="intlink" href="'+link+'">'+locales.alle_infos+' '+marker.ortName+'</a></b><br/><br/>';
			var maphtml = ortlink+'<div id="'+whichmini+'" style="width: 250px; height: 150px"></div>';

			var infoTabs = [
				new GInfoWindowTab(locales.ort_bilder, ortlink+'<div id="cityimages"></div><div id="cityimagenav"></div>'),
				new GInfoWindowTab(locales.ort_karte, maphtml),
				new GInfoWindowTab(locales.ort_details, ortlink+'<div id="citydetails'+marker.ortId+'"></div>')
			];
			map.openInfoWindowTabsHtml(marker.getPoint(), infoTabs);

			var minimap = new GMap2(document.getElementById(whichmini));
			minimap.setCenter(marker.getLatLng(), 9);
			//minimap.setCenter(marker.getLatLng(), 0+marker.zoomLevel);
			minimap.setZoom(1*marker.zoomLevel);
			minimap.addControl(new GSmallMapControl());

			//console.log("marker");
			//console.log(minimap);
			//console.log(marker.getPoint());
			//console.log(1*marker.zoomLevel);

			setCityDetails(marker.ortId);
			
			// RuN-Pixel-Aufruf
			RUN = new Object();
			firstParam = true;
			DW = new Object();
			_runVisDat();
			_runDwDat();
			_runMeta();
			DW.maca = '';
			DW.ref = window.location.pathname;
			_runTag();
			
		}
	}
}


function setCityDetails(ortId) {

	var detailsUrl = '/?gajax=1&action=citydetails&lang='+locales.lang+'&ortid='+ortId;

	var request = GXmlHttp.create();
	request.open("GET", detailsUrl, true);
	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			var xmlDoc = request.responseXML;
			var details = xmlDoc.getElementsByTagName("details").item(0).firstChild.data;
			var images = xmlDoc.getElementsByTagName("images").item(0).firstChild.data;
			var imagecount = xmlDoc.getElementsByTagName("imagecount").item(0).firstChild.data;
			document.getElementById("citydetails"+ortId).innerHTML = details;
			document.getElementById("cityimages").innerHTML = images;

			$('#cityimages').cycle({
				fx: 'scrollLeft',
				click: '#cityimages',
				timeout: 0,
				easing: 'easeInOutBack',
				pager: '#cityimagenav'
			});

			$('#cityimagenav a:first').addClass("activeSlide");

		}
	}
	request.send(null);
	return true;

}


/*

Karte daten & fakten

*/

var overlay;
var isFocused = false;


function loadFactsMap() {
  if (GBrowserIsCompatible()) {

	initMapIcon();

	map = new GMap2(document.getElementById("gmap"));
	map.setCenter(new GLatLng(50.93073802371819, 10.37109375), 5); // center of germany
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(5, 5)));
	var point = new GLatLng(locales.cityLat, locales.cityLng);
	overlay = new GMarker(point,  { icon : mapIcon});
	map.addOverlay(overlay);

	$("a#focuslink").bind("click", function() {
		toggleView();
	});

	$("a#overviewlink").bind("click", function() {
		toggleView();
	});

	//$("span#focusrow").fadeIn("slow");

  }
}


function toggleView() {

	var fadeOutLink = (isFocused) ? "span#overviewrow" : "span#focusrow";
	var fadeInLink = (!isFocused) ? "span#overviewrow" : "span#focusrow";
	$(fadeOutLink).fadeOut("normal", function() {
		$(fadeInLink).fadeIn("normal");
	});

	if (!isFocused) {
		isFocused = true;
		map.setZoom(locales.zoomLevel);
		map.panTo(new GLatLng(locales.cityLat, locales.cityLng), 13);
		map.removeOverlay(overlay);
	}
	else {
		isFocused = false;
		map.addOverlay(overlay);
		map.setCenter(new GLatLng(50.93073802371819, 10.37109375), 13); // center of germany
		map.setZoom(5);
	}

}


/*

Karte Adressen

*/

var maps = [];

var geocoder = new GClientGeocoder();

function loadAddressMaps() {
  if (GBrowserIsCompatible()) {

	initMapIcon();

	for (var i=0; i<locales.mapids.length; i++) {
		mapid = locales.mapids[i];
		map = new GMap2(document.getElementById("gmap"+mapid));
		map.setCenter(new GLatLng(51.2894, 10.4370), 6); // mitte von deutschland
		map.enableContinuousZoom();
		map.addControl(new GSmallMapControl());
		getAddress(locales.mapadr[i], mapid, map);
		maps[mapid] = map;
	}
  }
}

function getAddress(address, mapid, dmap) {
  geocoder.getLatLng(
	address,
	function(point) {
		if (point) {
			dmap.setCenter(point, 15);
			var marker = new GMarker(point, { icon : mapIcon});
			dmap.addOverlay(marker);
			map.savePosition();
			document.getElementById("gmap"+mapid).style.visibility = "visible";
			document.getElementById("gmapglink"+mapid).style.visibility = "visible";
		}
		else {
		//	document.getElementById("gmap"+mapid).style.display = "none";
		//	document.getElementById("gmapglink"+mapid).style.display = "none";
		}
	}
  );
 }







