function ToggleGoogleMap(visible) {
	var canvas = document.getElementById("GMap_Canvas");

	// * method for profiles
	if (visible == null) {
		if (canvas.style.display == "none") {
			canvas.style.display = "block";
			if (GoogleMap == null) {
				SetupMap();
			}
		}
		else {
			canvas.style.display = "none";
		}
	}
	// * method for list
	else {
		if (visible) {
			canvas.style.display = "block";
			if (GoogleMap == null) {
				SetupMap();
			}
		}
		else {
			canvas.style.display = "none";
		}
	}
}

var GoogleMap = null;
var Gmap_Markers = new Array();
var infoWindows = new Array();

function AddPin(latitude, longitude, companyname, address, city, zipexact, link, interview, video) {
	if (latitude == 0 || longitude == 0)
		return;
	
	var text = "<p class='Address'><span class='CompanyName'>" + companyname + "</span><br />" + address + "<br />" + city + "</p>";
	if (typeof (zipexact) == "boolean" && zipexact) {
		text += "<p class='ZipExact'>Achtung: Diese Position ist nur PLZ-genau!</p>";
	}
	if (link) {
		text += "<p class='link'><a href='" + link + "'>&gt; Zum Detailprofil</a></p>";
	}

	var pos = new google.maps.LatLng(latitude, longitude);
	var markerImage = null;
	if (typeof (video) == "boolean" && video) {
		markerImage = new google.maps.MarkerImage("res/img/map/pin_mitfilm.png", new google.maps.Size(44, 55), new google.maps.Point(0, 0), new google.maps.Point(21, 54));
	}
	else if (typeof (interview) == "boolean" && interview) {
		markerImage = new google.maps.MarkerImage("res/img/map/pin_portrait.png", new google.maps.Size(46, 55), new google.maps.Point(0, 0), new google.maps.Point(17, 54));
	}
	else {
		markerImage = new google.maps.MarkerImage("res/img/map/pin_basic.png", new google.maps.Size(27, 42), new google.maps.Point(0, 0), new google.maps.Point(10, 41));
	}

	var marker = new google.maps.Marker({
		position: pos,
		icon: markerImage
	});

	var infowindow = new google.maps.InfoWindow({
		content: text
	});

	infoWindows.push(infowindow);

	google.maps.event.addListener(marker, 'mouseover', function() {
		for (m in infoWindows) {
			infoWindows[m].close();
		}
		infowindow.open(GoogleMap, marker);
	});

	google.maps.event.addListener(marker, 'click', function() {
		window.location.href = link;
	});
	
	Gmap_Markers.push(marker);
}

function SetupMap() {
	var myLatlng = new google.maps.LatLng(48.152344345643336, 11.56585693359375);
	var myOptions = {
		zoom: 8,
		center: myLatlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};
	GoogleMap = new google.maps.Map(document.getElementById("GMap_Canvas"), myOptions);
	var bounds = new google.maps.LatLngBounds();

	if (Gmap_Markers.length > 0) {
		for (var m in Gmap_Markers) {
			bounds.extend(Gmap_Markers[m].getPosition());
			Gmap_Markers[m].setMap(GoogleMap);
		}
	}
	else {
		var gLatLng = new google.maps.LatLng(48.152344345643336, 11.56585693359375);
		bounds.extend(gLatLng);
		var marker = new google.maps.Marker({
			position: gLatLng
		});
		var contentString = "<p class='ZipExact'>Leider keine Treffer!</p>";
		var infowindow = new google.maps.InfoWindow({
			content: contentString
		});

		setTimeout(function() {
		infowindow.open(GoogleMap, marker);
		}, 350);
		marker.setMap(GoogleMap);
	}

	if (Gmap_Markers.length == 1) {
		GoogleMap.panToBounds(bounds);
		GoogleMap.setCenter(bounds.getCenter());
		GoogleMap.setZoom(15);
	}
	else {
		GoogleMap.fitBounds(bounds);
	}
}
