function load_indicator() {
	document.getElementById('load_indicator').style.visibility = 'visible';
}

function stop_indicator() {
	document.getElementById('load_indicator').style.visibility = 'hidden';
}

function processXML(url) {
	var bounds = new GLatLngBounds();
	var req = GXmlHttp.create();
	req.open("GET", url, true);
	//map.clearOverlays();
	//request_init(url);
	req.onreadystatechange = function() {
	//document.getElementById("center").innerHTML += "<br/>state:" + req.readyState;
	//setTimeout();
		if (req.readyState == 4) {
			//alert("zzz!");
			stop_indicator();
			if (req.status == 200) {
				var xmlDoc = req.responseXML;
				// get array of markers, then loop
				var markers = xmlDoc.documentElement.getElementsByTagName("marker");

				for (var i = 0; i < markers.length; i++) {
					// get attribues of each marker
					var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
					var highlight = markers[i].getAttribute("highlight");
					var fav = markers[i].getAttribute("fav");
					var rubrik = parseInt(markers[i].getAttribute("rubrik"));
					var labels = markers[i].getAttribute("tooltip");
					var label_decode = html_entity_decode(labels)
					var maplinkz = markers[i].getAttribute("maplink"); 

					switch (fav) {
						case "t":
						createMarker(point,label_decode,maplinkz,highlight,rubrik,fav,(i+1));
						break
						case "f":
						createMarker(point,label_decode,maplinkz,highlight,rubrik,fav,i);
					}
					if (fav_map == 1) {
						bounds.extend(point);
					}
				}
				if (fav_map == 1) {
					map.setZoom(map.getBoundsZoomLevel(bounds));
					map.setCenter(bounds.getCenter());
				}
			}
			
		} 
		else {
			load_indicator();
		} 
	}
	req.send(null);
}

function gmap_url(lat, lng, zoom, angebot) {
	url = "gmapxml.php?zoom=" + zoom + "&lat=" + lat + "&lng=" + lng + "&id=" + angebot;
	return url;
}

function html_entity_decode(str) {
	ta=str.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&apos;/g, "'").replace(/&quot;/g, '"').replace(/&euro;/g, "€");
	return ta;
}

//*wohnung -whg -1,2*, *haus -haus -3*, *wg -0*
function rubrik_icons(highlight,rubrik) {

	var rubrik_icons;

	//create icon
	function icon_image (image_path) {
		var icon = new GIcon();
		icon.image = image_path;
		icon.shadow = "img/gmap/shadow.png";
		icon.iconSize = new GSize(24, 38);
		icon.shadowSize = new GSize(36, 38);
		icon.iconAnchor = new GPoint(12, 38);
		return icon;
	}
	
	switch (rubrik) {
		case 0:
			image_path = "img/gmap/wg";
			break
		case 1:
		case 2:
			image_path = "img/gmap/whg";
			break
		case 3:
			image_path = "img/gmap/haus";
	}
	
	if (highlight== "t") {
		image_path += "_on.png"; 
	} 
	else if (highlight == "f") {
		image_path += "_off.png";
	}

	rubrik_icons = icon_image(image_path);
	return rubrik_icons;
}

function icon_numbered (i) {

	var icon_numbered;

	function icon_image (image_path) {
		var icon = new GIcon();
		icon.image = image_path;
		icon.shadow = "img/gmap/numbered_icons/shadow.png";
		icon.iconSize = new GSize(20, 34);
		icon.shadowSize = new GSize(37, 34);
		icon.iconAnchor = new GPoint(10, 34);
		return icon;
	}

	if (i) {
		var image_path = "img/gmap/numbered_icons/marker"+i+".png";
	}

	icon_numbered = icon_image(image_path);
	return icon_numbered;
}

function createMarker(point,tltips,maplink,highlight,rubrik,fav,i) {

	if (fav == "t") {
		var marker = new GMarker(point, icon_numbered(i));
	}
	else if (fav == "f") {
		var marker = new GMarker(point, rubrik_icons(highlight,rubrik));
	}

	marker.tooltip = '<div class="tooltip">'+tltips+'</div>';

	GEvent.addListener(marker, "click", function() {
		window.location= ''+maplink+''; 
	});

	map.addOverlay(marker);

	GEvent.addListener(marker,"mouseover", function() {
		showTooltip(marker);
		//marker.setImage("img/gmap/whg_on.png");
	});

	GEvent.addListener(marker,"mouseout", function() {
		tooltip.style.visibility="hidden"
		//marker.setImage("img/gmap/whg_off.png");
	});
}

function showTooltip(marker) {
	tooltip.innerHTML = marker.tooltip;
	var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.getBounds().getSouthWest(),map.getZoom());
	var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
	var anchor=marker.getIcon().iconAnchor;
	var width=marker.getIcon().iconSize.width;
	var pos = new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(offset.x - point.x - anchor.x + width,- offset.y + point.y +anchor.y));  
	pos.apply(tooltip);
	tooltip.style.visibility="visible";
}