// JavaScript Document

var map;
var container;
var opacity = 0.4;
var circle;
var centerMarker;
var circleRadius;
var zoom = 2;
var centerPoint;
var markersArray = new Array();
var bounds;
var sourceAnz;
var sourceLaenge;
var sourceBreite;
var useAllCode = "true"; 

function GoogleMapInit(l, b, p, o, a, d, sourceLaengengrad, sourceBreitengrad, sanz, radius) {

if (radius>0) {
	bounds = new GLatLngBounds();
	if (navigator.appName=="Microsoft Internet Explorer"){
		
		useAllCode = "false";		
	}
	var laengengrad = l.split(';');
	var breitengrad = b.split(';');
	var plz = p.split(';');
	var ort = o.split(';');
	var anz = a.split(';');
	var durchschnitt = d.split(';');
	sourceAnz = sanz;
	sourceLaenge=sourceLaengengrad;
	sourceBreite=sourceBreitengrad;
	circleRadius=radius;
 if (GBrowserIsCompatible()) {
    // create the Google Map object and a GeoCoder
    map = new GMap2(document.getElementById("googlemap"));
    map.setCenter(new GLatLng(sourceLaengengrad,sourceBreitengrad), 13);
    geocoder = new GClientGeocoder();
        
    // add controls to the object
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.addControl(new GScaleControl());  

	map.enableScrollWheelZoom();
    map.enableContinuousZoom(); 
   // var bounds = new GLatLngBounds();
    if (laengengrad != null) {
        if (laengengrad != "") {
       		for (var i = 0; i < laengengrad.length; i++) {
            // map location from function parameter
            	//setTimeout("showAddress(arg_address[i],arg_anz[i])", 100);
            	showAddress(laengengrad[i], breitengrad[i],plz[i], ort[i], anz[i], durchschnitt[i]);
           		bounds.extend(new GLatLng(laengengrad[i], breitengrad[i]));
            }
        }
    } else {
        //default map location
        
        map.setCenter(new GLatLng(50.944584,10.17334), 6);
    }
    
    if (useAllCode=="true"){
   		map.setCenter(bounds.getCenter());
   	}else{
   		
   		map.setCenter(new GLatLng(sourceLaenge,sourceBreite));
   		
   	}
    doDrawCircle();
    //map.setZoom(map.getBoundsZoomLevel(bounds));    
    map.savePosition();
    map.addControl(new GOverviewMapControl(new GSize(200,150)));
}else{
	//alert("Browser incompatible");
}
} //end if (radius>0)
else { //show germany

if (GBrowserIsCompatible()) {        
        map = new GMap2(document.getElementById("googlemap"));
        map.setCenter(new GLatLng(50.944584,10.17334), 6);
      }
}
}

function showAddress(laengengrad, breitengrad, plz, ort, anz, durchschnitt) {
	var imgNr = anz;
	if (anz>10){
		imgNr='10';
		if (anz>20){
			imgNr='20';	
			if (anz>30){
				imgNr='30';	
				if (anz>40){
					imgNr='40';	
					if (anz>50){
						imgNr='50';	
						if (anz>60){
							imgNr='60';	
							if (anz>70){
								imgNr='70';
								if (anz>80){
									imgNr='80';	
									if (anz>90){
										imgNr='90';		
									}		
								}		
							}	
						}	
					}	
				}	
			}	
		}
	}
	var point = new GLatLng(laengengrad,breitengrad);
	//map.setCenter(point, 13);
	var myIcon = new GIcon(G_DEFAULT_ICON);
	myIcon.image = "/wps/PA_ICB/theme/img/paleblue_Marker"+imgNr+".png";
	myIcon.iconSize = new GSize(20,34);
	//myIcon.shadow = "/GWeb/theme/img/bauprojektShadow.png";
	//myIcon.shadowSize = new GSize(39,34);
	var markerOptions = { icon:myIcon };
	var marker = new GMarker(point, markerOptions);	
	var html = "<b>"+plz+" "+ort+"</b><br/>"+anz+" Bauprojekte vorhanden";
    GEvent.addListener(marker, "mouseover", function() {marker.openInfoWindowHtml(html);});
    GEvent.addListener(marker, "mouseout", function() {map.closeInfoWindow();});
    
    markersArray.push(marker);
    map.addOverlay(marker);
   	//marker.openInfoWindowHtml(anz);	
}

function doDrawCircle(){
var imgNr = sourceAnz;
	if (sourceAnz>10){
		imgNr='10';
		if (sourceAnz>20){
			imgNr='20';	
			if (sourceAnz>30){
				imgNr='30';	
				if (sourceAnz>40){
					imgNr='40';	
					if (sourceAnz>50){
						imgNr='50';	
						if (sourceAnz>60){
							imgNr='60';	
							if (sourceAnz>70){
								imgNr='70';
								if (sourceAnz>80){
									imgNr='80';	
									if (sourceAnz>90){
										imgNr='90';		
									}		
								}		
							}	
						}	
					}	
				}	
			}	
		}
	}
	if (circle) {
		map.removeOverlay(circle);
	}
	if (centerMarker) {
		map.setCenter(centerMarker.getLatLng())
		
		
	}else {
		var myIcon = new GIcon(G_DEFAULT_ICON);
		myIcon.image = "/wps/PA_ICB/theme/img/sourceTown"+imgNr+".png";
		myIcon.iconSize = new GSize(25,43);
		//myIcon.shadow = "/wps/PA_ICB/theme/img/sourceTownShadow.png";
		myIcon.shadowSize = new GSize(50,43);
		//
		centerMarker = new GMarker(new GLatLng(sourceLaenge,sourceBreite),{draggable:true, icon:myIcon});
		GEvent.addListener(centerMarker,'dragend',doDrawCircle);
		
		
		map.addOverlay(centerMarker);
	}
	var center = centerMarker.getLatLng();// map.getCenter();
	var circlePoints = Array();
	with (Math) {
		var d = circleRadius/6378.8;	// radians
		var lat1 = (PI/180)* center.lat(); // radians
		var lng1 = (PI/180)* center.lng(); // radians
		for (var a = 0 ; a < 361 ; a++ ) {
			var tc = (PI/180)*a;
			var y = asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc));
			var dlng = atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(y));
			var x = ((lng1-dlng+PI) % (2*PI)) - PI ; // MOD function
			var point = new GLatLng(parseFloat(y*(180/PI)),parseFloat(x*(180/PI)));
			circlePoints.push(point);
			bounds.extend(point);
		}
		if (d < 1.5678565720686044) {
			circle = new GPolygon(circlePoints, '#0B3861', 2, 1, '#000000', 0.15);	
		}
		else {
			circle = new GPolygon(circlePoints, '#000000', 2, 1);	
		}
		map.addOverlay(circle); 
		
		
 		map.setZoom(map.getBoundsZoomLevel(bounds)+1);		

	}
}


