/*
 * ======================================
 * 01-2008 Thomas Schlicker | 08 MEDIA de
 * ======================================
 * Datei: js/maps.js
 * Autor: Thomas Schlicker
 * ======================================
 */

if(GBrowserIsCompatible()) {

	var map;
	var geocoder = null;
	var mittelpunktLat;
	var mittelpunktLng;
	var boundsObj = null;
	var markerLat;
	var markerLng;
	var mapMarker = new Array();
	var mapMarkerHtml = new Array();
	var zoomLevel = 5;

	function setMittelpunkt(lat, lng) {
		mittelpunktLat = lat;
		mittelpunktLng = lng;
	}
	
	function setZoomLevel(level) {
		zoomLevel = level;
	}

	function setBounds(minLat, maxLat, minLng, maxLng) {
		boundsObj = new GLatLngBounds(new GLatLng(minLat,minLng), new GLatLng(maxLat,maxLng));
	}
	
	function showMap(set_first,first_no,set_advert,advert_width) {

		if(window.attachEvent) {
			window.attachEvent("onload", function() {
				load(set_first,first_no,set_advert,advert_width);
			});
			window.attachEvent("onunload", function() {
				GUnload();
			});
		}
		else {
			window.addEventListener("load", function() {
				load(set_first,first_no,set_advert,advert_width);
			}, false);
			window.addEventListener("onunload", function() {
				GUnload();
			}, false);
		}
	}

	function load(set_first,first_no,set_advert,advert_width) {
   
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		//map.addControl(new GOverviewMapControl());
		map.enableContinuousZoom();

		geocoder = new GClientGeocoder();

    	markerAddress = document.getElementById("useraddress").value; 
		//alert(markerAddress);
		geocoder.getLatLng(
			markerAddress,
			function(point) {
	        
				if(point) {
					if(mapMarker.length == 0 && document.getElementById("ort").value == document.getElementById("userort").value)
						map.setCenter(point, zoomLevel); // set center by carduser
	        		var marker = new GMarker(point);
		            map.addOverlay(marker);
	        		var centerMap = map.getCenter();
	        	}      
			}		
		);
		
		if(boundsObj != null) {
			zoomLevel = map.getBoundsZoomLevel(boundsObj);
			if(zoomLevel > 15) zoomLevel = 15;
		}
		
		map.setCenter(new GLatLng(mittelpunktLat, mittelpunktLng), zoomLevel);
		for(var j = 0; j < mapMarker.length; j++) {
			
			if(typeof mapMarker[j] != 'undefined') {
				//alert(mapMarker[j]);
				map.addOverlay(mapMarker[j]);
			}
		}
		if(set_first) {
			mapMarker[first_no].openInfoWindow(mapMarkerHtml[first_no]);
			if(set_advert) {
				
				advert_width_img = advert_width;
				advert_width = advert_width + 16;
				document.getElementById("div-advert-img").innerHTML = "<img src='" + set_advert + "' id='advert-img' alt=''>";
				document.getElementById("advert").style.display = "block";
				// Anzeige zuerst groß öffnen
				//document.getElementById("advert").style.width = advert_width + "px";
				//document.getElementById("advert-img").style.width = advert_width_img + "px";
				document.getElementById("advert").style.width = "298px";
				document.getElementById("advert-img").style.width = "282px";
			}
		}
	}

	function createMarker(i,lat,lng,html,img,pid) {

		var markerIcon = new GIcon();
		markerIcon.image = img;
		markerIcon.iconSize = new GSize(22, 26);
		markerIcon.iconAnchor = new GPoint(11, 26);
		markerIcon.infoWindowAnchor = new GPoint(5, 1);

		var point = new GLatLng(lat,lng);   
		markerOptions = { icon:markerIcon };
		
		if(setMarker(point,markerOptions,html,pid)) {
			mapMarker[i] = setMarker(point,markerOptions,html,pid);
			mapMarkerHtml[i] = html;
		}
  	}
  
  	function setMarker(point,markerOptions,html,pid) {

    	var marker = new GMarker(point, markerOptions);
    	GEvent.addListener(marker, "click",
      		function() {
        		marker.openInfoWindowHtml(html);
        		clickProfil(pid);
      		}
    	);
    	if(marker)
    		return marker;
    	else
    		return false;
  	}
}
