var gmap;
var markers = {};
var markerImg = new Array();
markerImg[0] = "http://www.immoblue.de/wittenberg/img/wbg-marker1.png";
markerImg[1] = "http://www.immoblue.de/wittenberg/img/wbg-marker2.png";
var aniNr = 0;
var activeMarker = null;
var aniTimer = null;
function initializeMap() {
	if (document.getElementById("listMap")) {
		if (mapResult.points.length == "undefined" || mapResult.points.length == 0) {
			return false;
		}
		gmap = new GMap2(document.getElementById("listMap"));
		gmap.setCenter(firstMapPoint, 13);
		gmap.addControl(new GMapTypeControl(1));
		gmap.addControl(new GLargeMapControl());
		gmap.addControl(new GScaleControl(250));
		new GKeyboardHandler(gmap);
		gmap.enableContinuousZoom();
		gmap.disableDoubleClickZoom();
		gmap.enableScrollWheelZoom();
		
		for (i in mapResult.points) {
			t = mapResult.points[i].split(",");
			var point = new GLatLng(t[0], t[1]);
			marker = addMarker(point, i,  mapResult.content[i]);
				gmap.addOverlay(marker);
			markers[i] = marker;
				
		}
		var bounds = gmap.getBounds();
		gmap.setZoom(gmap.getBoundsZoomLevel(bounds));
		gmap.setCenter(bounds.getCenter());
	}
	else {
		setTimeout("initializeMap()", 900);
	}
}

function addMarker(point, key, html) {
	icon = new GIcon();
	icon.image = markerImg[0];
	icon.shadow = markerImg[0]; 
	icon.iconSize = new GSize(32,37);
	icon.shadowSize = new GSize(32, 37);
	icon.iconAnchor = new GPoint(0, 37);
	icon.infoWindowAnchor = new GPoint(16,18);
	var markerData = {};
	markerData.icon = icon;
	
	var clientMarker = new GMarker(point, markerData);
	var hoverId = "mapHover"+key;
	
	GEvent.addListener(clientMarker, "click", function() {
	        clientMarker.openInfoWindowHtml(html);
	});

	GEvent.addListener(clientMarker, "mouseover", function() {
		clientMarker.setImage(markerImg[1]);
		if (document.getElementById(hoverId)) {
			var elem = document.getElementById(hoverId);
			addClass(elem, "mapover");	
			
		}
	});
	GEvent.addListener(clientMarker, "mouseout", function() {
		clientMarker.setImage(markerImg[0]);
		if (document.getElementById(hoverId)) {
			var elem = document.getElementById(hoverId);
			removeClass(elem, "mapover");
		}
	});
	return clientMarker;
}

function showActiveMarker(key) {
	if (gmap !== undefined) {
		gmap.panTo(markers[key].getLatLng());
		startAnimateMarker(key);
	}
}

function resetActiveMarker(key) {
	if (markers[key] !== undefined) {
		stopAnimateMarker();
		markers[key].setImage(markerImg[0]);
	}
}

function blinkMarker() {
	aniNr++;
	if (aniNr > 1) {
		aniNr = 0;
	}
	markers[activeMarker].setImage(markerImg[aniNr]);
}

function startAnimateMarker(key) {
	activeMarker = key;
	if (!aniTimer) aniTimer = setInterval(blinkMarker, 200);
}

function stopAnimateMarker() {
	if (!aniTimer) return false;
	clearInterval(aniTimer);
	aniTimer = null;
	activeMarker = null;
}

function hasClass(ele,cls) {
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
function addClass(ele,cls) {
	if (!this.hasClass(ele,cls)) {
		ele.className += " "+cls;
	}
}
function removeClass(ele,cls) {
	if (hasClass(ele,cls)) {
		var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg,' ');
	}
}

