var map, manager;
var centerLatitude = 47.80, centerLongitude =  13.4, startZoom = 7;

var Hotels=[];
var HotelsText=[];

function createMarkerClickHandler(marker, text) {
	return function() {
		marker.openInfoWindowHtml(text);
		return false;
	};
}


function infoBallon(i){
	Hotels[i].openInfoWindow(HotelsText[i]);
}




function createMarker(pointData) {
	var latlng = new GLatLng(pointData.latitude, pointData.longitude);
	var icon = new GIcon();
	//icon.image = 'http://uwmike.com/maps/manhattan/img/red-marker.png';
	var titelfarbe;
	switch(pointData.schwerpunkt){
		case 'Wellness & Vital':
			  icon.image = 'marker1.png';
			  titelfarbe = "#111111"
			  break
		case 'Sport & Aktiv':
			  icon.image = 'marker2.png';
			   titelfarbe = "#FF9900"
			  break  
		case 'Wandern & Natur':
			  icon.image = 'marker3.png';
			   titelfarbe = "#669900"
			  break  
		case 'Kultur & Genuss':
			  icon.image = 'marker4.png';
			   titelfarbe = "#990000"
			  break  
			  
	}
	
	icon.iconSize = new GSize(18, 19);
	icon.iconAnchor = new GPoint(9, 12);
	icon.infoWindowAnchor = new GPoint(17, 7);

	opts = {
		"icon": icon,
		"clickable": true,
		"labelText": pointData.nummer,
		"labelOffset": new GSize(-12, -16),
		"draggable": true
	};
	var marker = new LabeledMarker(latlng, opts);
	
	var xText = '<h3 style="color:'+ titelfarbe +'">' + pointData.name + '</h3>'+pointData.plz+', '+pointData.ort+'<br>	<a href="javascript:opener.location=\'' + pointData.lk +  '\'; opener.focus();void(0);" style="color:'+ titelfarbe +'">Details &amp; Angebote</a>'
	
	
	var handler = createMarkerClickHandler(marker, xText);
	GEvent.addListener(marker, "click", handler);
	
	marker.enableDragging();
		
	Hotels[parseInt(pointData.nummer)] = marker
	HotelsText[parseInt(pointData.nummer)] = xText
	
	return marker;
}


function createLabelMarker(pointData) {
	var latlng = new GLatLng(pointData.latitude, pointData.longitude);
	
	var icon = new GIcon();
	icon.image = 'http://www.niederoesterreich.at/images/leer.gif';
	icon.iconSize = new GSize(24, 24);
	icon.iconAnchor = new GPoint(12, 12);
	icon.infoWindowAnchor = new GPoint(17, 7);

	opts = {
		"icon": icon,
		"clickable": false,
		"labelText": pointData.name,
		"labelOffset": new GSize(12, -4),
		"labelClass": "markerLabel2"
	};
	var marker = new LabeledMarker(latlng, opts);
	return marker;
}

function windowHeight() {
	// Standard browsers (Mozilla, Safari, etc.)
	if (self.innerHeight)
		return self.innerHeight;
	// IE 6
	if (document.documentElement && document.documentElement.clientHeight)
		return document.documentElement.clientHeight;
	// IE 5
	if (document.body)
		return document.body.clientHeight;
	// Just in case. 
	return 0;
}

function handleResize() {
	var height = windowHeight() - 30;
	//document.getElementById('map').style.height = height + 'px';
}


var Strecken = new Array()
function ShowHideStrecke(xmldatei){
	if (!Strecken[("s" + xmldatei)]){
		Strecken[("s" + xmldatei)] = new Object();
		var request = GXmlHttp.create();
		request.open("GET", xmldatei + ".xml", true);
		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				var xmlDoc = request.responseXML;
				var lines = xmlDoc.documentElement.getElementsByTagName("line");
				for (var a = 0; a < lines.length; a++) {
					var colour = lines[a].getAttribute("colour");
					var points = lines[a].getElementsByTagName("point");
					var weight = lines[a].getAttribute("width");
					var pts = [];
					for (var i = 0; i < points.length; i++) {
						pts[i] = new GLatLng(parseFloat(points[i].getAttribute("lat")),parseFloat(points[i].getAttribute("lng")));
					}
					Strecken[("s" + xmldatei)].strecke = new GPolyline(pts, colour, weight, 0.7);
					map.addOverlay(Strecken[("s" + xmldatei)].strecke);
				}
			}
			
		}
		request.send(null);
	}else{
		map.panTo(Strecken[("s" + xmldatei)].center);
	}
}
function init() {
	handleResize();
	
	map = new GMap(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
	map.setCenter(new GLatLng(centerLatitude, centerLongitude), startZoom);
	map.addControl(new GMapTypeControl());
	map.enableContinuousZoom()
	map.enableDoubleClickZoom();

	manager = new GMarkerManager(map);
	
	// This is a sorting trick, don't worry too much about it.
	markers.sort(function(a, b) { return (a.abbr > b.abbr) ? +1 : -1; }); 
	
	batch = [];
	batch2 = [];
	for(id in markers) {
		batch.push(createMarker(markers[id]));
		batch2.push(createLabelMarker(markers[id]));
		
	}
	manager.addMarkers(batch, 7);
	manager.addMarkers(batch2, 9);
	manager.refresh();
	
	/*
	var geoXml = new GGeoXml("http://www.50plushotels.at/partner/50plus/karte/at.kml");
	map.addOverlay(geoXml);
	*/
	ShowHideStrecke("at")
	//ShowHideStrecke("at2")
}

window.onresize = handleResize;
window.onload = init;
window.onunload = GUnload;



