// JavaScript Document
//
//
//  vor dem Start einmal die alte Startseite laden (unsichtbarer IFrame?
//  http://emf.bundesnetzagentur.de/gisinternet/StartFrame.aspx?User=1000&Lang=de
//
//

// Globale Variablen
var mastMarkers = new Array();
var messMarkers = new Array();
var amsMarkers = new Array();
var autoMarkers = new Array();
var bundeslaender = new Array();
var genauigkeitArr = new Array("Unbekannter Ort","Land","Region (Bundesland/Bundesstaat, Provinz, Pr&auml;fektur usw.)","Kreis (Bezirk, Gemeinde usw.)","Ortschaft (Stadt, Dorf)","Postleitzahl (PLZ)","Stra&szlig;e","Kreuzung","Adresse","Grundst&uuml;ck (Name des Geb&auml;ude/Grundst&uuml;cks, Einkaufszentrum usw.)");
try {
   var geocoder = new GClientGeocoder();
}
   catch (e) {
}
var map;
var so;
var searchmarker;
var blueIcon;
var greenIcon;
var searchIcon;
var amsOnIcon;
var amsOffIcon;
var amsOverOnIcon;
var amsOverOffIcon;


amsReady = true;
messReady = true;
mastReady = true;

var mResize = false;

// Debug-Schalter
debug = false;
var params = window.location.search;
if(params.indexOf("debug")) {
	debug = true;
}

var slat = 0;
var slon = 0;
var szoom = 0;

// Schalter für Demo-Betrieb
var demo = false;

// Schalter fuer .Net4
var net4 = true;

// Schalter Auto-Zoom
var autoresize = false;

// Schalter fuer HitCounter
var countHits = true;


// Infotext zum Testbetrieb
var InfoTextTestbetrieb = "<div style='text-align: right; width: 100%; padding-bottom: 10px;'><a href='javascript:schliesseInfoTestbetriebfenster()'><img src='images/schliessen.png' alt='Schlie&szlig;en' border='0'></a></div><b>Informationen zum Testbetrieb</b><p>Das Informationsportal l&auml;uft aktuell im Testbetrieb. Dies bedeutet insbesondere, dass die hier dargestellten Funkanlagenstandorte und EMF-Messorte nicht aktuell sind. Die dargestellten Informationen basieren (wenn nicht anders angegeben) auf dem Datenstand vom 10. M&auml;rz 2010.</p><p>F&uuml;r die korrekte Funktionsweise des Informationsportals im Testbetrieb muss Ihr Browser folgende Anforderungen erf&uuml;llen:<ul><li>Cookies m&uuml;ssen zugelassen werden. Dies gilt sowohl f&uuml;r eigene Cookies der Seite als auch Fremdcookies der Server emf.bundesnetzagentur.de und google.com. Ohne diese Cookies ist eine korrekte Darstellung nicht m&ouml;glich.<br />&nbsp;</li><li>Ihr Browser muss Zugriff auf folgende Internetseiten haben:<ul><li>emf.bundesnetzagentur.de</li><li>demoemf.bundesnetzagentur.de</li><li>maps.google.com</li><li>maps.gstatic.com</li><li>gg.google.com</li><li>mt0.google.com</li><li>mt1.google.com</li></ul>Sollte es zu Problemen in der Darstellung oder der Funktion des Informationsportals kommen, stellen Sie bitte sicher, dass keine der genannten Seiten in Ihrem Browser geblockt ist.<br />&nbsp;</li><li>F&uuml;r den Testbetrieb ist es zudem notwendig, dass Popups nicht geblockt werden. Beim Start wird initial ein Popup ge&ouml;ffnet und kurz darauf wieder geschlossen, um eine Session mit dem EMF-Server zu initialisieren und ein g&uuml;ltiges Cookie des Servers zu erhalten. Im Regelbetrieb entf&auml;llt das PopUp sp&auml;ter, da dann das Cookie beim Starten der Anwendung automatisch generiert werden kann.</li></ul></p>";

// Zoomgrenze f&uuml;r die Darstellung von Stand- und Messorte
var zoomGrenze = 15;
var zoomAMSSymbol = 8;
var zoomGrenzeAMS = 5;

var blau_x = new Image(11,11);
blau_x.src = "images/x_blau.png";
var weiss_x = new Image(11,11);
weiss_x.src = "images/x_weiss.png";


var amsOverOn = new Image(22,21);
amsOverOn.src = "images/ams_uebersicht_on.png";
var amsOverOff = new Image(22,21);
amsOverOff.src = "images/ams_uebersicht_off.png";
var amsOn = new Image(40,30);
amsOn.src = "images/amson.png";
var amsOff = new Image(40,30);
amsOff.src = "images/amsoff.png";



/******* ADRESS-SUCHE ***********/

function adressenSuche() {
// Zusammensetzen des Suchstrings
	var adresse = "";
	showKarte();
	var astr = document.getElementById("street").value;
	document.getElementById("street").focus();
	var strasse = document.getElementById("street").value;
    if (strasse == "StraÃŸe") {strasse="";}
	if (strasse == "Stra&szlig;e") { strasse = ""; }
	if (strasse == "Straße") { strasse = ""; }
	var plz = document.getElementById("plz").value;
	if (plz == "PLZ") { plz = ""; }
	var ort = document.getElementById("ort").value;
	if (ort == "Ort") { ort = ""; }
	adresse = plz + " " + ort;
	if (strasse != "") { adresse = adresse +", " + strasse; }
	adresse = adresse + ", Deutschland";
	showAddress2(adresse, strasse);
	if (strasse == "") { document.getElementById("street").value = astr; }
    if( countHits ) counter("Suche Adresse", adresse, counterCallback, counterErrorCallback);
	return false;
}


function showAddress2(address, strasse) {
// Eigentliche Geokodierung der Adresse
	geocoder.setBaseCountryCode("DE");
	geocoder.getLocations(
		address, function(response) {showAddressCallback(response,strasse);}
	);
}


		function showAddressCallback(response, streetS) {
			if (!response || response.Status.code != 200) {
				var meldung = "<div style='postion:relative; text-align:right; width:100%; padding-bottom:10px;'><a href='javascript:schliesseAuswahlfenster()'><img src='images/schliessen.png' alt='Schlie&szlig;en' border=0 /></a></div><b>Keine Ortzuweisung m&ouml;glich</b><p>F&uuml;r die angegebene Adresse kann kein Ort in der Karte gefunden werden. Dies kann mehrere Gr&uuml;nde haben: Die angegebene Stra&szlig;e existiert nicht oder wurde falsch geschrieben. Die Kombination aus Stra&szlig;e und Postleitzahl ist nicht existent. Oder die Adresse liegt in einem Neubaugebiet, dass noch nicht im Adressregister aufgenommen wurde.";
				document.getElementById("auswahlfenster").innerHTML = meldung;
				document.getElementById("auswahlfenster").style.display = "block";
			} else {
				var resp = eval(response);
				var plms = response.Placemark;
				if (plms.length > 1)
				{
					var listf = "";
					for (i = 0; i < plms.length;i++) {
						place = response.Placemark[i];
						listf = listf + "<li><a href='javascript:jumpAddress("+place.Point.coordinates[1]+","+place.Point.coordinates[0]+")'>"+place.address + "</a></li>";
						//point = new GLatLng(place.Point.coordinates[1],
							//			place.Point.coordinates[0]);
						//marker = new GMarker(point);
						//map.addOverlay(marker);
					}
					listf = "<div style='postion:relative; text-align:right; width:100%;'><a href='javascript:schliesseAuswahlfenster()'><img src='images/schliessen.png' alt='Schlie&szlig;en' border=0 /></a></div><b>F&uuml;r Ihre Anfrage wurden mehrere Adressen gefunden.<br>Bitte w&auml;hlen Sie die gew&uuml;nschte Adresse aus!</b><ul>"+listf+"</ul> <small>Die Liste enth&auml;lt nur die ersten Treffer. Sollte die von Ihnen gesuchte Adresse nicht enthalten sein, versuchen Sie es bitte erneut. Geben Sie hierzu nach M&ouml;glichkeit eine vollst&auml;ndige postalische Adresse aus Stra&szlig;e, Postleitzahl und Ort ein.</small>";
					document.getElementById("auswahlfenster").innerHTML = listf;
					document.getElementById("auswahlfenster").style.display = "block";
				} else {
					place = response.Placemark[0];
					var pAcc = place.AddressDetails.Accuracy;
					if (place.AddressDetails.Accuracy < 6 && streetS != "") {
                        var meldung = "<div style='postion:relative; text-align:right; width:100%; padding-bottom:10px;'><a href='javascript:schliesseAuswahlfenster()'><img src='images/schliessen.png' alt='Schlie&szlig;en' border=0 /></a></div><b>Eingeschr&auml;nkte Ortszuweisung</b><p>F&uuml;r die angegebene Adresse kann nur eine eingeschr&auml;nkte Ortsbestimmung erfolgen. Dies kann mehrere Gr&uuml;nde haben: Die angegebene Stra&szlig;e existiert nicht oder wurde falsch geschrieben. Oder sie liegt nicht im Bereich der angegebenen Postleitzahl. Bitte &uuml;berpr&uuml;fen Sie Ihre Eingabe, um eine genauere Ortsbestimmung zu erm&ouml;glichen.<p>Die Ortsbestimmung erfolgte mit folgender Genauigkeit: "+ genauigkeitArr[pAcc];
						document.getElementById("auswahlfenster").innerHTML = meldung;
						document.getElementById("auswahlfenster").style.display = "block";
					}
					jumpAddress(place.Point.coordinates[1],place.Point.coordinates[0]);
				}
			}
		}


function jumpAddress(c1,c2) {
	// gefundene Adresse in den Kartenmittelpunkt r&uuml;cken und markern
	if (searchmarker) {map.removeOverlay(searchmarker);}
	point = new GLatLng(c1,c2);
	map.setCenter(point,15);
	var MarkerOptions = { icon:searchIcon };
	searchmarker = new GMarker(point,MarkerOptions);
	map.addOverlay(searchmarker);
}


function schliesseAuswahlfenster() {
	// Schließen der Auswahlliste
	document.getElementById("auswahlfenster").style.display = "none";
}


function onFocusElement(id,val) {
	// Automatisches L&ouml;schen des Wertes des Feldes bei erster Eingabe
	var elm = document.getElementById(id);
	if (elm.value == val) {
		elm.value = "";
	}
	schliesseAuswahlfenster();
}


/********* ENDE ADRESS-SUCHE ***********/







/******** ERZEUGEN DER MARKER  *************/


function createSMarker(point, markertyp, dateiname, mTitle)
{
	// Erstellen eines einzelnen Markers
	// &uuml;bergeben wir die Koordinate, der Typ, der Link auf die verkn&uuml;pfte Datei sowie der Tooltip-Text
    var MarkerOptions = { icon:markertyp, title:mTitle,zIndexProcess:importanceOrder };
    var mMarker = new GMarker(point,MarkerOptions);
    // AMSMarker nach vorne holen
    if( markertyp == amsOnIcon || markertyp == amsOverOnIcon ) {
      mMarker.importance = 99;
    } else {
      mMarker.importance = 98;
    }
	GEvent.addListener(mMarker, "click", function() {showInhalt(dateiname);});
	//map.addOverlay(mMarker);
	return mMarker;
}

function importanceOrder (marker,b) {
    return marker.importance;
}

function getOrte() {
	//if (map.getZoom() < zoomGrenzeBL) {
		//addBundeslaender();
	//}
    if (map.getZoom() < zoomGrenze) {
		document.getElementById("fehlermeldungen").style.display = "block";
	} else {
		document.getElementById("fehlermeldungen").style.display = "none";
	}
	document.getElementById("requestrunning").style.display = "block";
	amsReady = false;
	messReady = false;
	mastReady = false;
	getStandorte();
	getMessorte();
	getAMS();
}


function drawReady() {
	if (amsReady &&  mastReady && messReady) {
		document.getElementById("requestrunning").style.display = "none";
	}
}


// Standorte
function getStandorte(){
    if (map.getZoom() < zoomGrenze) {
		mastReady = true;
		drawReady();
	} else {
		var bounds = map.getBounds();
		var southWest = bounds.getSouthWest();
		var northEast = bounds.getNorthEast();
		var bb = '{"boundingBox":[' + northEast.lat() + ',' + northEast.lng() + ','
                                + southWest.lat() + ',' + southWest.lng() + ']}';
        AjaxRequest.postJSON(
        {
            'url': 'DataService.asmx/GetStandorte',
            'queryString': bb,
            'onSuccess': function(req) { getStandorteCallback(req); },
			'onTimeout': function(req) { getError(req); },
            'onError': function(req) { getError(req); }
        }
        );
    }
}

function getStandorteCallback(req) {
	var response = req.responseText;
	var startZeichen = response.substring(0,6);
	if (startZeichen == "FEHLER") { // || startZeichen == "SQLSQL") {
		alert(response);
		//so.show();
		//alert("HIER!");
	} else {
		var mResponse = eval('(' + response + ')');
		//alert(mResponse[0].fid);
        if (net4) {
			mResponse = mResponse.d;
		}
		var arraylen = mResponse.length;
		for (i=0;i<mastMarkers.length;i++) {
			map.removeOverlay(mastMarkers[i]);
		}
		mastMarkers = new Array();
		for (var i=0; i < arraylen; i++) {
			//alert(mResponse[i].fid);
			var point = new GLatLng(mResponse[i].y,mResponse[i].x);
			//alert ("Punkt erzeugt");
			var dateiname = "http://emf.bundesnetzagentur.de/gisinternet/regtp/standort.aspx?FID="+mResponse[i].f;
			mastMarkers[i] = createSMarker(point,blueIcon,dateiname,"StoBNr.: "+mResponse[i].s);
		}
		for (i=0;i< mastMarkers.length; i++) {
			map.addOverlay(mastMarkers[i]);
		}
	}
	mastReady = true;
	drawReady();
}


// AMS
function getAMS(){
	if (map.getZoom() < zoomGrenzeAMS) {
		amsReady = true;
		drawReady();
	} else {
		var bounds = map.getBounds();
		var southWest = bounds.getSouthWest();
		var northEast = bounds.getNorthEast();
		var bb = '{"boundingBox":[' + northEast.lat() + ',' + northEast.lng() + ','
                                + southWest.lat() + ',' + southWest.lng() + ']}';
        AjaxRequest.postJSON(
        {
            'url': 'DataService.asmx/GetASM',
            'queryString': bb,
            'onSuccess': function(req) { getAMSCallback(req); },
			'onTimeout': function(req) { getError(req); },
            'onError': function(req) { getError(req); }
        }
        );
    }
}

function getError(req) {
	document.getElementById("requestrunning").style.display = "none";
	if (debug) {
		document.getElementById("fehlermeldungen").innerHTML = "<b>FEHLER</b> - Die Datenbank ist tempor&auml;r nicht erreichbar.<br />Bitte versuchen Sie es sp&auml;ter noch einmal!<br />StatusText=" + req.statusText + "\nContents=" + req.responseText;
	} else {
		document.getElementById("fehlermeldungen").innerHTML = "<b>FEHLER</b> - Die Datenbank ist tempor&auml;r nicht erreichbar.<br />Bitte versuchen Sie es sp&auml;ter noch einmal!";
	}
	document.getElementById("fehlermeldungen").style.display = "block";
}

function getAMSCallback(req) {
	var response = req.responseText;
	var startZeichen = response.substring(0,6);
	if (startZeichen == "FEHLER") { // || startZeichen == "SQLSQL") {
		alert(response);
		//so.show();
		//alert("HIER!");
	} else {
		var mResponse = eval('(' + response + ')');
        if (net4) {
			mResponse = mResponse.d;
		}

		// Abhängig von der verwendeten Version von PHp etc. wird die gesamte Anwort als Variable "d" gekapselt
		//mResponse = mResponse.d;
		var arraylen = mResponse.length;

		for (i=0;i<amsMarkers.length;i++) {
			map.removeOverlay(amsMarkers[i]);
		}

		amsMarkers = new Array();
		for (var i=0; i < arraylen; i++) {
			//alert(mResponse[i].fid);
			var point = new GLatLng(mResponse[i].y,mResponse[i].x);
			//alert ("Punkt erzeugt");
			var dateiname = "http://emf.bundesnetzagentur.de/gisinternet/monitor/infocurrentmeas.aspx?FID="+mResponse[i].f;


			var infotext = mResponse[i].p+" "+mResponse[i].o;
			if (mResponse[i].s != "null") {
				infotext = infotext +", "+mResponse[i].s;
			}


            if (mResponse[i].a == 0) {
				// Historische AMS
                if( map.getZoom() < zoomAMSSymbol ) {
                  amsMarkers[i] = createSMarker(point,amsOverOffIcon,dateiname,infotext);
                } else {
                  amsMarkers[i] = createSMarker(point,amsOffIcon,dateiname,infotext);
                }
			} else {
				// Aktive AMS
                if( map.getZoom() < zoomAMSSymbol ) {
                  amsMarkers[i] = createSMarker(point,amsOverOnIcon,dateiname,infotext);
                } else {
                  amsMarkers[i] = createSMarker(point,amsOnIcon,dateiname,infotext);
                }
			}
		}
		for (i=0;i< amsMarkers.length; i++) {
			map.addOverlay(amsMarkers[i]);
		}
	}
	amsReady = true;
	drawReady();
}




// Messorte
function getMessorte(){
    if (map.getZoom() < zoomGrenze) {
		messReady = true;
		drawReady();
	} else {

		var bounds = map.getBounds();
		var southWest = bounds.getSouthWest();
		var northEast = bounds.getNorthEast();
		var bb = '{"boundingBox":[' + northEast.lat() + ',' + northEast.lng() + ','
                                + southWest.lat() + ',' + southWest.lng() + ']}';
    AjaxRequest.postJSON(
        {
            'url': 'DataService.asmx/GetMesspunkte',
            'queryString': bb,
            'onSuccess': function(req) { getMessorteCallback(req); },
			'onTimeout': function(req) { getError(req); },
            'onError': function(req) { getError(req); }
        }
        );
	}
}

function getMessorteCallback(req) {
	var response = req.responseText;
	var startZeichen = response.substring(0,6);
	if (startZeichen == "FEHLER") { // || startZeichen == "SQLSQL") {
		alert(response);
    	//map.addOverlay(so);
		//so.show();
		//alert("gMoCb");
	} else {
		var mResponse = eval('(' + response + ')');
		//alert(mResponse[0].fid);
        if (net4) {
			mResponse = mResponse.d;
		}
		var arraylen = mResponse.length;
		for (i=0;i<messMarkers.length;i++) {
			map.removeOverlay(messMarkers[i]);
		}
		messMarkers = new Array();
		for (var i=0; i < arraylen; i++) {
			//alert(mResponse[i].fid);
			var point = new GLatLng(mResponse[i].y,mResponse[i].x);
			//alert ("Punkt erzeugt");
			var dateiname = "http://emf.bundesnetzagentur.de/gisinternet/bnetza/InfoPublic.aspx?FID="+mResponse[i].f;
			messMarkers[i] = createSMarker(point,greenIcon,dateiname,mResponse[i].p+" "+mResponse[i].o+", "+mResponse[i].d);
		}
		for (i=0;i< messMarkers.length; i++) {
			map.addOverlay(messMarkers[i]);
		}
	}
	messReady = true;
	drawReady();
}




function removeBMarker() {
	for (i=0;i<mastMarkers.length;i++) {
		map.removeOverlay(mastMarkers[i]);
	}
	for (i=0;i<messMarkers.length;i++) {
		map.removeOverlay(messMarkers[i]);
	}
	for (i=0;i<amsMarkers.length;i++) {
		map.removeOverlay(amsMarkers[i]);
	}
}




/********** ENDE MARKER-ERSTELLUNG ***********/


function initialize() {
	
	paramsObj = document.URL.toQueryParams();
	
	if(paramsObj.lat)
	{
	   slat = parseFloat(paramsObj.lat);    
	}
	if(paramsObj.lon)
	{
	   slon = parseFloat(paramsObj.lon);
	}
	if(paramsObj.zoom)
	{
	   szoom = parseInt(paramsObj.zoom);  
	}
	

	if (demo) {
		document.getElementById("testhinweis").style.display = "inline";

		fenster = window.open("http://emf.bundesnetzagentur.de/gisinternet/monitor/infocurrentmeas.aspx","TEMPORAER","width=1,height=1,left=1280,top=1024");
	//this.focus();
		if (!fenster) {
			alert("Fuer den Testbetrieb ist es erforderlich, dass Popups zugelassen werden. Bitte deaktivieren Sie den Popup-Blocker fuer demoemf.bundesnetzagentur.de");
		}
	} else {
		// iframe bestücken mit Adresse
		document.getElementById("testframe").src = "http://emf.bundesnetzagentur.de/gisinternet/monitor/infocurrentmeas.aspx";
		// Testbetrieb ausblenden
	}

    // Karte wurde aufgerufen: countHits
    if( countHits ) counter("Karteninitialisierung", "", counterCallback, counterErrorCallback);
	if (GBrowserIsCompatible()) {
		//alert(screen.width+"x"+screen.height);
		if (screen.width > 1024 && autoresize) {
			document.getElementById("kopfzeile").style.width = "1233px";
			document.getElementById("anzeige").style.width = "1038px";
			document.getElementById("fehlermeldungen").style.left = "298px";
			document.getElementById("requestrunning").style.left = "430px";
		}
		if (screen.height > 800 && autoresize) {
			document.getElementById("anzeige").style.height = "726px";
			document.getElementById("kartenfenster").style.height = "706px";
			document.getElementById("infofenster").style.height = "706px";
			document.getElementById("erlaeuterungfenster").style.height = "706px";
			document.getElementById("fusszeile").style.top = "801px";
		} else {
			document.getElementById("anzeige").style.height = "490px";
			document.getElementById("kartenfenster").style.height = "470px";
			document.getElementById("infofenster").style.height = "470px";
			document.getElementById("erlaeuterungfenster").style.height = "470px";
		}

    	try {
		map = new GMap2(document.getElementById("karte"));
		map.addControl(new GLargeMapControl());
		map.enableDoubleClickZoom();
		map.enableContinuousZoom();
		map.enableScrollWheelZoom();
		map.addControl(new GOverviewMapControl());
		map.addControl(new GScaleControl());
		
		
		// Falls Mittelpunkt übergeben wurde, Karte ausrichten
		if (slat > 0 && slon > 0 && szoom > 0) {
			map.setCenter(new GLatLng(slat,slon),szoom);	
		} else {
	        map.setCenter(new GLatLng(51.151786,10.415039), 5);
		}

		// Create markers
        // Sender
		blueIcon = new GIcon();
		blueIcon.image = "images/sender.png";
		blueIcon.shadow = "";
		blueIcon.iconSize = new GSize(30,26);
        blueIcon.imageMap=[0,0,0,30,30,26,26,0];
        blueIcon.iconAnchor = new GPoint(15, 13);

        // messtationen
		greenIcon = new GIcon();
		greenIcon.image = "images/messstation.png";
		greenIcon.shadow = "images/blnk.png";
		greenIcon.iconSize = new GSize(26,26);
        greenIcon.imageMap=[0,0,0,26,26,26,26,0];
        greenIcon.iconAnchor = new GPoint(13, 13);

        // AMS on
        amsOnIcon = new GIcon();
        amsOnIcon.image = "images/amson.png";
        amsOnIcon.shadow = "images/blnk.png";
        amsOnIcon.iconSize = new GSize(40,30);
        amsOnIcon.imageMap=[0,0,0,40,40,30,30,0];
        amsOnIcon.iconAnchor = new GPoint(20, 15);

        // AMS off
        amsOffIcon = new GIcon();
        amsOffIcon.image = "images/amsoff.png";
        amsOffIcon.shadow = "images/blnk.png";
        amsOffIcon.iconSize = new GSize(40,30);
        amsOffIcon.imageMap=[0,0,0,40,40,30,30,0];
        amsOffIcon.iconAnchor = new GPoint(20, 15);

        // AMS on Overview
        amsOverOnIcon = new GIcon();
        amsOverOnIcon.image = "images/ams_uebersicht_on.png";
        amsOverOnIcon.shadow = "images/blnk.png";
        amsOverOnIcon.iconSize = new GSize(21,20);
        amsOverOnIcon.imageMap=[0,0,0,35,35,35,35,0];
        amsOverOnIcon.iconAnchor = new GPoint(10, 10);

        // AMS off Overview
        amsOverOffIcon = new GIcon();
        amsOverOffIcon.image = "images/ams_uebersicht_off.png";
        amsOverOffIcon.shadow = "images/blnk.png";
        amsOverOffIcon.iconSize = new GSize(21,20);
        amsOverOffIcon.imageMap=[0,0,0,35,35,35,35,0];
        amsOverOffIcon.iconAnchor = new GPoint(10, 10);


		searchIcon = new GIcon(G_DEFAULT_ICON);
		searchIcon.image = "images/fahne.png";
		searchIcon.shadow = "images/blnk.png";
        searchIcon.iconSize = new GSize(40,35);
        searchIcon.iconAnchor = new GPoint(20, 17);
		//searchIcon.iconAnchor = GPoint(20,17);



		GEvent.addListener(map,"moveend",function() {mapMoved();});
		GEvent.addListener(map,"zommend",function() {mapMoved();});
		var msize = map.getSize().toString();
		size = msize.replace("(","");
		size = size.replace(")","");
		size = size.replace(" ","");
		var werte = size.split(",");
		var breite = werte[0];
		var pos = breite / 2;
		getOrte();
		}
		catch (e) {
			if (e == "ReferenceError: GMap2 is not defined") {
				alert("Auf die Karten von Google kann nicht zugegriffen werden. Dies ist fuer die Funktion des Informationsportals notwendig. Stellen Sie bitte sicher, dass eine Verbindung zum Google Kartenserver verfuegbar ist.");
			}
			//alert(e);
		}

		document.cookie = 'ASP.NET_SessionId=20kjub3ffy3h2b3f1g0wzx55; host=emf.bundesnetzagentur.de';
		if (demo) {
			if (fenster) {
				window.setTimeout(function() {fenster.close();}, 2000);
			}
		}
	}
}

function addBundeslaender() {
       	bwA = new Array(8.6776600331017,49.626819926661,0,8.405279646247941,49.5550800934859,0,8.518270072121179,49.2555393905782,0,8.38919001935553,49.2331788247031,0,8.223686442430299,48.9641415011651,0,7.57101001648065,48.08522825928181,0,7.606810017551109,47.57844925109649,0,8.417499985067369,47.5709711773553,0,8.426160070202121,47.66673786524141,0,8.56508985211318,47.8044918827191,0,8.698630017466771,47.7563378136898,0,8.71307758639214,47.7019552290743,0,9.219730006078731,47.666848201186,0,9.60615999219578,47.5754415425015,0,10.091199999642,47.6610597610928,0,9.99823263270965,48.350564021287,0,10.4738399649759,48.7047782601607,0,10.3739499737951,49.0044182732949,0,10.1414158939993,49.2110253518971,0,10.1038300002011,49.5163316419484,0,9.792499994399741,49.7318906357245,0,9.631894424041599,49.7019933942398,0,9.649889985190191,49.7923603396206,0,9.31629999993098,49.7691882962734,0,9.41868999369213,49.6885487596636,0,9.099072724880189,49.5710415504725,0,8.861219982548469,49.4646487069427,0,8.6776600331017,49.626819926661,0);
		cnt = bwA.length / 3;
		sPoints = new Array();
		for (i=0;i<cnt;i++) {
			nom = i * 3;
			sPoints[i] = new GLatLng(bwA[nom+1],bwA[nom]);
		}
		var lname = "Baden-Wurttemberg";
		bw = new GPolygon(sPoints,"#808080", 2, 1, "#ff0000", 0, {title:lname});
		GEvent.addListener(bw,"click",function() {clickedBundesland("BW");});
        map.addOverlay(bw);
		bundeslaender.push(bw);
}

function mapMoved () {
	if (!mResize)
	{
		document.getElementById('informationenreiter').style.display = "none";
		document.getElementById('inhaltsframe').src = "";
	}
	removeBMarker();
	if (map.getZoom() < zoomAMSSymbol) {
		if(document.getElementById("imgamson").src != amsOverOn.src) {
			document.getElementById("imgamsoff").src = amsOverOff.src;
			document.getElementById("imgamson").src = amsOverOn.src;
		}
	} else {
		if(document.getElementById("imgamson").src != amsOn.src) {
			document.getElementById("imgamsoff").src = amsOff.src;
			document.getElementById("imgamson").src = amsOn.src;
		}

	}
	createLink();
	switchLinkWindow('close');
	getOrte();
}

function clickedBundesland(land) {
	if (land == "BW") {
		mPoint = new GLatLng(48.871941,8.85498);
		map.setCenter(mPoint,7);
	}
	for (i=0;i<bundeslaender.length;i++) {
		map.removeOverlay(bundeslaender[i]);
	}
}



/********** FUNKTIONEN ZUR REITERVERWALTUNG ***********/


function showErlaeuterung (dateiname) {
	document.getElementById('erlaeuterungfenster').style.display = 'block';
	document.getElementById('kartenfenster').style.display = 'none';
	document.getElementById('infofenster').style.display = 'none';
	document.getElementById('erlaeuterungframe').src = dateiname;
	document.getElementById('kartenreiter').className = "reiter";
	document.getElementById('informationenreiter').className = "reiter";
	document.getElementById('erlaeuterungreiter').className = "reiteraktiv";
	document.getElementById('erlaeuterungreiter').style.display = "inline";
	document.getElementById('erl_close').src = blau_x.src;
	document.getElementById('info_close').src = weiss_x.src;
}

function showInhalt (dateiname) {
	document.getElementById('kartenfenster').style.display = 'none';
	document.getElementById('erlaeuterungfenster').style.display = 'none';
	document.getElementById('inhaltsframe').src = "";
	var jetzt = new Date();
	var mt = jetzt.getTime();
	document.getElementById('inhaltsframe').src = dateiname+"&scnd="+mt;
	var f = document.getElementById('inhaltsframe');
	f.src = f.src;
	document.getElementById('infofenster').style.display = 'block';
	document.getElementById('kartenreiter').className = "reiter";
	document.getElementById('informationenreiter').className = "reiteraktiv";
	document.getElementById('informationenreiter').style.display = "inline";
	document.getElementById('erl_close').src = weiss_x.src;
	document.getElementById('info_close').src = blau_x.src;
}

function showInformationen () {
	document.getElementById('infofenster').style.display = 'block';
	document.getElementById('kartenfenster').style.display = 'none';
	document.getElementById('erlaeuterungfenster').style.display = 'none';
	document.getElementById('kartenreiter').className = "reiter";
	document.getElementById('erlaeuterungreiter').className = "reiter";
	document.getElementById('informationenreiter').className = "reiteraktiv";
	document.getElementById('erl_close').src = weiss_x.src;
	document.getElementById('info_close').src = blau_x.src;
}

function showErlaeuterungL () {
	document.getElementById('infofenster').style.display = 'none';
	document.getElementById('kartenfenster').style.display = 'none';
	document.getElementById('erlaeuterungfenster').style.display = 'block';
	document.getElementById('kartenreiter').className = "reiter";
	document.getElementById('erlaeuterungreiter').className = "reiteraktiv";
	document.getElementById('informationenreiter').className = "reiter";
	document.getElementById('erl_close').src = blau_x.src;
	document.getElementById('info_close').src = weiss_x.src;
}


function showKarte() {
	document.getElementById('infofenster').style.display = 'none';
	document.getElementById('kartenfenster').style.display = 'block';
	document.getElementById('erlaeuterungfenster').style.display = 'none';
	document.getElementById('kartenreiter').className = "reiteraktiv";
	document.getElementById('erlaeuterungreiter').className = "reiter";
	document.getElementById('informationenreiter').className = "reiter";
	document.getElementById('erl_close').src = weiss_x.src;
	document.getElementById('info_close').src = weiss_x.src;
}

function showInfoSuche() {
	var textHTML = "<div style='postion:relative; text-align:right; width:100%; padding-bottom:10px;'><a href='javascript:schliesseAuswahlfenster()'><img src='images/schliessen.png' alt='Schlie&szlig;en' border=0 /></a></div><b>Informationen zur Adressensuche:</b><p>Mit Hilfe der Adressensuche k&ouml;nnen Sie gezielt die Informationen an der gew&uuml;nschten Adresse abrufen.</p>Die Suche erfolgt auf Basis postatilscher Adressen. Die besten Ergebnisse erhalten Sie daher bei Eingabe einer vollst&auml;ndigen postalischen Adresse mit <b>Stra&szlig;e, Hausnummer, PLZ</b> und/oder <b>Ort</b>.<br>Bei sehr neuen Stra&szlig;en bzw. nach Stra&szlig;enumbenennungen kann es vorkommen, dass eine Adresse nicht gefunden werden kann. Geben Sie dann stattdessen eine nahegelegene Stra&szlig;e an.";
	document.getElementById("auswahlfenster").innerHTML = textHTML;
	document.getElementById("auswahlfenster").style.display = "block";
}

function closeInformation() {
	showKarte();
	document.getElementById('informationenreiter').style.display = "none";
	document.getElementById('inhaltsframe').src = "";
}

function closeErlaeuterung() {
	showKarte();
	document.getElementById('erlaeuterungreiter').style.display = "none";
	document.getElementById('erlaeuterungframe').src = "";
}

/********* ENDE REITERVERWALTUNG ************/

/********* FUNKTION TESTBETRIEB *************/
function openInfoTestbetriebfenster() {
	document.getElementById("infoFensterTestbetrieb").style.display = "block";
	document.getElementById("infoFensterTestbetrieb").innerHTML = InfoTextTestbetrieb;
}

function schliesseInfoTestbetriebfenster() {
	document.getElementById("infoFensterTestbetrieb").style.display = "none";
}

function mapSize(schalter) {
	var einblend = false;
	mResize = true;
	mCenter = map.getCenter();
	if (document.getElementById('kartenfenster').style.display == 'none')
	{
		document.getElementById('kartenfenster').style.display = 'block';
		einblend = true;
	}
	if (schalter == "gross") {
		document.getElementById("kopfzeile").style.width = "1233px";
		document.getElementById("anzeige").style.width = "1038px";
		document.getElementById("fehlermeldungen").style.left = "298px";
		document.getElementById("requestrunning").style.left = "430px";
		if (screen.height > 800) {
			document.getElementById("anzeige").style.height = "726px";
			document.getElementById("kartenfenster").style.height = "706px";
			document.getElementById("infofenster").style.height = "706px";
			document.getElementById("erlaeuterungfenster").style.height = "706px";
			document.getElementById("fusszeile").style.top = "801px";
		}
	} else {
		document.getElementById("kopfzeile").style.width = "977px";
		document.getElementById("anzeige").style.width = "782px";
		document.getElementById("fehlermeldungen").style.left = "170px";
		document.getElementById("requestrunning").style.left = "302px";
		document.getElementById("anzeige").style.height = "490px";
		document.getElementById("kartenfenster").style.height = "470px";
		document.getElementById("infofenster").style.height = "470px";
		document.getElementById("erlaeuterungfenster").style.height = "470px";
		document.getElementById("fusszeile").style.top = "565px";
	}
	map.checkResize();
	map.setCenter(mCenter);
	if (einblend) {
		document.getElementById('kartenfenster').style.display = 'none';	
		einblend = false;
	}
	mResize= false;
}

// Count PageHits
function counter(call, extradata, callback, errorCallback) {
   if( extradata.length > 255 ) extradata = extradata.substring(0, 255);
   if( call.length > 255 ) call = call.substring(0, 255);
   var prms = '{"call":"' + call + '", "extradata":"' + extradata + '"}';
   AjaxRequest.postJSON(
      {
            'url': 'counter/Counter.asmx/Count',
            'queryString': prms,
            'onSuccess': function(req) { callback(req); },
            'onError': function(req) { errorCallback(req); }
      }
   );
}

function counterCallback(req) {
    var response = req.responseText;
}

function counterErrorCallback(req) {
    var response = req.responseText;
    //alert(response);
}

function switchLinkWindow(switcher) {
	elm = document.getElementById("linkfenster");
	if (switcher == "open") {
		createLink();
		elm.style.display = "block";
	} else {
		elm.style.display = "none";
	}
}

function createLink() {
	llat = map.getCenter().lat();
	llon = map.getCenter().lng();
	lzoom = map.getZoom();
	document.getElementById("linkfield").value = document.URL + "?lat=" + llat + "&lon=" + llon + "&zoom=" + lzoom;

}

