//<![CDATA[

var Station = new Array();
var StationUser = new Array();
var StationLG = new Array();
var StationBG = new Array();
var iconData = {
"de": { width: 30, height: 20 },
"it": { width: 30, height: 20 },
"at": { width: 30, height: 20 },
"es": { width: 30, height: 20 },
"be": { width: 30, height: 20 },
"ch": { width: 30, height: 20 },
"nl": { width: 30, height: 20 },
"fr": { width: 30, height: 20 },
"gr": { width: 30, height: 20 },
"knut": { width: 30, height: 40 },
"bl_shs": { width: 30, height: 20 },
"bl_bay": { width: 30, height: 20 },
"bl_ber": { width: 30, height: 20 },
"bl_bre": { width: 30, height: 20 },
"bl_bwb": { width: 30, height: 20 },
"bl_ham": { width: 30, height: 20 },
"bl_hes": { width: 30, height: 20 },
"bl_mvp": { width: 30, height: 20 },
"bl_nds": { width: 30, height: 20 },
"bl_nrw": { width: 30, height: 20 },
"bl_rlp": { width: 30, height: 20 },
"bl_sah": { width: 30, height: 20 },
"bl_sxn": { width: 30, height: 20 },
"bl_srl": { width: 30, height: 20 },
"bl_thu": { width: 30, height: 20 },
"flag-shadow": { width: 40, height: 30 },
"marker": { width: 20, height: 34 },
"mymarker": { width: 20, height: 34 },
"shadow50": { width: 37, height: 34 }
};

var pvLayer = [
	{
		"zoom": [0, 6],
		"places": [
			{
				"name": "Deutschland",
				"icon": ["de", "flag-shadow"],
				"posn": [50.999, 10.41],
				"html": ""
			},
			{
				"name": "Italien",
				"icon": ["it", "flag-shadow"],
				"posn": [43.521, 10.590],
				"html": ""
			},
			{
				"name": "Österreich",
				"icon": ["at", "flag-shadow"],
				"posn": [47.67, 14.52],
				"html": ""
			},
			{
				"name": "Spanien",
				"icon": ["es", "flag-shadow"],
				"posn": [40.17, -4.13],
				"html": ""
			},
			{
				"name": "Belgien",
				"icon": ["be", "flag-shadow"],
				"posn": [50.33, 4.57],
				"html": ""
			},
			{
				"name": "Schweiz",
				"icon": ["ch", "flag-shadow"],
				"posn": [46.73, 8.21],
				"html": ""
			},
			{
				"name": "Niederlande",
				"icon": ["nl", "flag-shadow"],
				"posn": [52.11, 5.54],
				"html": ""
			},
			{
				"name": "Frankreich",
				"icon": ["fr", "flag-shadow"],
				"posn": [46.95, 2.92],
				"html": ""
			},
			{
				"name": "Griechenland",
				"icon": ["gr", "flag-shadow"],
				"posn": [38.99, 21.88],
				"html": ""
			},
			{
				"name": "Äquator",
				"icon": ["knut", "flag-shadow"],
				"posn": [0.16, 0.15],
				"html": ""
			},

		]
	},

	{
		"zoom": [7, 10],
		"places": [
			{
				"name": "Schleswig-Holstein",
				"icon": ["bl_shs", "flag-shadow"],
				"posn": [54.207436, 9.602051],
				"html": ""
			},
			{
				"name": "Bayern",
				"icon": ["bl_bay", "flag-shadow"],
				"posn": [48.908059, 11.414795],
				"html": ""
			},
			{
				"name": "Berlin",
				"icon": ["bl_ber", "flag-shadow"],
				"posn": [52.523742, 13.412933],
				"html": ""
			},
			{
				"name": "Bremen",
				"icon": ["bl_bre", "flag-shadow"],
				"posn": [53.076703,8.806915],
				"html": ""
			},
			{
				"name": "Baden-WÜrttemberg",
				"icon": ["bl_bwb", "flag-shadow"],
				"posn": [48.665571,9.003296],
				"html": ""
			},
			{
				"name": "Hamburg",
				"icon": ["bl_ham", "flag-shadow"],
				"posn": [53.553363,9.990692],
				"html": ""
			},
			{
				"name": "Hessen",
				"icon": ["bl_hes", "flag-shadow"],
				"posn": [50.53438,9.008789],
				"html": ""
			},
			{
				"name": "Mecklenburg-Vorpommern",
				"icon": ["bl_mvp", "flag-shadow"],
				"posn": [53.904338,12.502441],
				"html": ""
			},
			{
				"name": "Niedersachsen",
				"icon": ["bl_nds", "flag-shadow"],
				"posn": [52.62306,9.129639],
				"html": ""
			},
			{
				"name": "Nordrhein-Westfalen",
				"icon": ["bl_nrw", "flag-shadow"],
				"posn": [51.426614,7.668457],
				"html": ""
			},
			{
				"name": "Rheinland-Pfalz",
				"icon": ["bl_rlp", "flag-shadow"],
				"posn": [49.958288,7.322388],
				"html": ""
			},
			{
				"name": "Sachsen-Anhalt",
				"icon": ["bl_sah", "flag-shadow"],
				"posn": [51.995028,11.870728],
				"html": ""
			},
			{
				"name": "Saarland",
				"icon": ["bl_srl", "flag-shadow"],
				"posn": [49.377008,6.878815],
				"html": ""
			},
			{
				"name": "Sachsen",
				"icon": ["bl_sxn", "flag-shadow"],
				"posn": [51.106971,13.381348],
				"html": ""
			},
			{
				"name": "Thüringen",
				"icon": ["bl_thu", "flag-shadow"],
				"posn": [50.930738,11.260986],
				"html": ""
			},
		]
	},
];

function disableEnterKey(e)
{
     var key;

     if(window.event)
          key = window.event.keyCode;     //IE
     else
          key = e.which;     //firefox

     if(key == 13)
          return false;
     else
          return true;
}

var cssNode=document.createElement('link');
cssNode.type='text/css';
cssNode.rel='stylesheet';
cssNode.href='/css/HtmlControl.css';
document.getElementsByTagName("head")[0].appendChild(cssNode);

var map, cluster, eventListeners=[], markersArray=[], icon, geocoder;
var icons = {};
var latSW=0, lngSW=0, latNE=0, lngNE=0;


var iconSE = new GIcon();
iconSE.image = "http://www.sonnenertrag.eu/images/marker.png";
iconSE.shadow = "http://www.sonnenertrag.eu/images/shadow50.png";
iconSE.iconSize = new GSize(20, 34);
iconSE.shadowSize = new GSize(28, 26);
iconSE.iconAnchor = new GPoint(10, 33);
iconSE.infoWindowAnchor = new GPoint(10, 1);

function createMarker(point, name, ort, leistung, benutzer_id, link) {
  var marker = new GMarker(point, { icon: iconSE, title: name });
  var html = "<div class='infowindow'><b>" + name + "</b><br />" + ort + "<br />" + leistung + " kWp<br /><a href=\"" + link + "\">Details</a></div>";
  GEvent.addListener(marker, 'click', function() {
    marker.openInfoWindowHtml(html);
  });
  return marker;
}

function getMarkers(minLat,minLng,maxLat,maxLng,zoomlevel){
	GDownloadUrl("/ajax/anlage/mapgeorss/?minLat=" + minLat + "&minLng=" + minLng + "&maxLat=" + maxLat + "&maxLng=" + maxLng + "&zoom=" + zoomlevel, function(data) {
		var markersArray=[];
		var xml = GXml.parse(data);
		var mrks = xml.documentElement.getElementsByTagName("marker");
		for (var i = 0; i < mrks.length; i++) {
			var name = mrks[i].getAttribute("name");
			var ort = mrks[i].getAttribute("ort");
			var leistung = mrks[i].getAttribute("leistung");
			var benutzer_id = mrks[i].getAttribute("benutzer_id");
			var link = mrks[i].getAttribute("link");
			var point = new GLatLng(parseFloat(mrks[i].getAttribute("lat")),
		                            parseFloat(mrks[i].getAttribute("lng")));
			var marker = createMarker(point, name, ort, leistung, benutzer_id,link);
			markersArray.push(marker);
		}
		latSW = map.getBounds().getSouthWest().lat();
		lngSW = map.getBounds().getSouthWest().lng();
		latNE = map.getBounds().getNorthEast().lat();
		lngNE = map.getBounds().getNorthEast().lng();

		cluster.removeMarkers();
	  	cluster.addMarkers(markersArray);
		cluster.fitMapMaxZoom=7;
		cluster.refresh();

	});

}


function setupMarkers() {
  	mgr = new GMarkerManager(map);
  	mgr.addMarkers(
	  	getMarkers(
	  		map.getBounds().getSouthWest().lat(),
	  		map.getBounds().getSouthWest().lng(),
	  		map.getBounds().getNorthEast().lat(),
	  		map.getBounds().getNorthEast().lng(),
	  		map.getZoom()
	  	));
}

function createCatMarker(posn, title, icon, html) {
    var marker = new GMarker(posn, {title: title, icon: icon, draggable:false });
	//if(html != ''){
    //	GEvent.addListener(marker, 'click', function() { marker.openInfoWindowHtml(html); });
    //}
	GEvent.addListener(marker, 'click', function() {
		if(map.getZoom() <= 4){
			map.setCenter(posn, map.getZoom() + 2);
		} else {
			map.setCenter(posn, map.getZoom() + 1);
		}
		});
    return marker;
}

function getIcon(images) {
    var icon = null;
    if (images) {
      if (icons[images[0]]) {
        icon = icons[images[0]];
      } else {
        icon = new GIcon();
        icon.image = "/images/"
            + images[0] + ".gif";
        var size = iconData[images[0]];
        icon.iconSize = new GSize(size.width, size.height);
        icon.iconAnchor = new GPoint(size.width >> 1, size.height >> 1);
        icon.infoWindowAnchor=new GPoint(size.width >> 1,size.height >> 1);
        icon.shadow = "/images/"
            + images[1] + ".gif";
        size = iconData[images[1]];
        icon.shadowSize = new GSize(size.width, size.height);
        icons[images[0]] = icon;
      }
    }
    return icon;
  }

function setuppvMarkers() {
	map.closeInfoWindow();
	var markersArray=[];
	map.clearOverlays();
	for (var i in pvLayer) {
		var layer = pvLayer[i];
		var markers = [];
		if( map.getZoom() >= layer["zoom"][0] && map.getZoom() <= layer["zoom"][1] ){
			for (var j in layer["places"]) {
				var place = layer["places"][j];
				var icon = getIcon(place["icon"]);
				var title = place["name"];
				var posn = new GLatLng(place["posn"][0], place["posn"][1]);
				var html = place["html"];
				var marker = createCatMarker(posn,title,icon,html);
			    markersArray.push(marker);
			}
		}
	}
	var cluster=new ClusterMarker(map, { markers:markersArray } );
	cluster.refresh();
}

function renewMarkers(){
	if(	map.getZoom() >= 7 ){
		if( latSW > map.getBounds().getSouthWest().lat()
		  	|| lngSW < map.getBounds().getSouthWest().lng()
		  	|| latNE < map.getBounds().getNorthEast().lat()
		  	|| lngNE > map.getBounds().getNorthEast().lng() ){
			var markersArray=[];
			map.clearOverlays();
			setupMarkers();
		} else {
			if ( latSW==0 && lngSW==0 && latNE==0 && lngNE==0) {
				var markersArray=[];
				map.clearOverlays();
				setupMarkers();
			}
		}
	} else {
		setuppvMarkers();
	}
}

function showAddress(address) {
    if (geocoder) {
      geocoder.getLatLng(
        address,
        function(point) {
          if (!point) {
            alert(address + " nicht gefunden");
          } else {

            map.setCenter(point, 13);
            var marker = new GMarker(point);
            //map.addOverlay(marker);
            marker.openInfoWindowHtml(address);
          }
        }
      );
    }
  }

function starte() {
    if (GBrowserIsCompatible()) {
    	if(document.getElementById("map")){
         	map = new GMap2(document.getElementById("map"));
      	//map.setCenter(new GLatLng(51.165691, 10.451526), 6, G_NORMAL_MAP);
      	map.setCenter(new GLatLng(50.999, 10.41), 4, G_NORMAL_MAP);

      	map.enableContinuousZoom();
      	map.enableDoubleClickZoom();
      	//map.enableScrollWheelZoom();

	    map.addControl(new GMapTypeControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7, 7)));
		map.addControl(new GLargeMapControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7, 28)));

		cluster=new ClusterMarker(map);

		GEvent.addListener(map, 'zoomend',
    		function(){
				map.closeInfoWindow();
				/*renewMarkers();*/
			}
		);
		/*GEvent.addListener(map, 'moveend',
    		function(){
				renewMarkers();
			}
		);
		GEvent.addListener(map, 'dragend',
    		function(){
				renewMarkers();
			}
		);*/

		// load all markers
		setupMarkers();

		geocoder = new GClientGeocoder();

//		setTimeout(setupMarkers,1000);
		setTimeout(setuppvMarkers, 500);
    	}
    }
}



    function suche(user)
	{
		var found = false;
		for (var i in pvLayer) {
			var layer = pvLayer[i];
			for (var j in layer["places"]) {
				var place = layer["places"][j];
				var icon = getIcon(place["icon"]);
				var title = place["name"];
				var posn = new GLatLng(place["posn"][0], place["posn"][1]);
				var html = place["html"];
				var BG = place["BG"];
				var LG = place["LG"];
				var thisuser = place["user"];
				if(title==user) {
					map.setZoom(10);
					map.panTo(new GLatLng(BG, LG));
					var marker = createMarker(posn,title,icon,html);
					map.addOverlay(marker);
					marker.openInfoWindowHtml(html);
					found = true;
				}
			}
		}
		if(found == false){
			alert("Es wurde kein Benutzer mit diesem Namen gefunden.\n\nNo user with this name could be found.");
		}
		return false;
	}
//]]>
