var iniBundesland = "";

  var map = null;
  var geocoder = null;
  var startzoom = 15;
  var markers = new Array();
  var marker_texts = new Array();
  function load() {
      if (GBrowserIsCompatible()) {
          if (document.getElementById("map")) {
              map = new GMap2(document.getElementById("map"));
              geocoder = new GClientGeocoder();
              // add controls
              map.addControl(new GLargeMapControl());
              map.addControl(new GMapTypeControl());
              map.setCenter(new GLatLng(51.193115,10.83252), 5);    
              if (iniBundesland > 0) {
                  load_state(iniBundesland);
              }
          }
      }
  }
  function addMarker(address, info_text) {
    geocoder.getLatLng(
      address,
      function(point) {
        if (!point) {
          //alert(address + " nicht gefunden");
        } else {
          var marker = new GMarker(point,{title:address});
                if (info_text != "") {
                    GEvent.addListener(marker, "click", function() {
                        marker.openInfoWindowHtml(info_text);
                      });
                    GEvent.addListener(marker, "mouseover", function() {
                        marker.openInfoWindowHtml(info_text); // + "<br>Koordinaten: " + point.lat() + " , " + point.lng()
                    });
                }
          map.addOverlay(marker);
          markers[markers.length]=marker;
          marker_texts[marker_texts.length] = info_text;
        }
      }
    );
  }
  
  function addMarker_from_Address(x, y, info_text) {
    var point = new GLatLng(x,y)
    var marker = new GMarker(point,{title:address});
        if (info_text != "") {
            GEvent.addListener(marker, "click", function() {
                marker.openInfoWindowHtml(info_text);
        });
            GEvent.addListener(marker, "mouseover", function() {
                marker.openInfoWindowHtml(info_text); // + "<br>Koordinaten: " + point.lat() + " , " + point.lng()
            });
        }
    map.addOverlay(marker);
    markers[markers.length]=marker;
    marker_texts[marker_texts.length] = info_text;
  }  
    // AJAX
    
    var xmlHttp = createXmlHttpRequestObject();
    
    function createXmlHttpRequestObject() {
      var xmlHttp;
      try {
        xmlHttp = new XMLHttpRequest();
      } catch(e) {
        var xmlHttpVersions = new Array('MSXML2.XMLHTTP.6.0',
                                        'MSXML2.XMLHTTP.5.0',
                                        'MSXML2.XMLHTTP.4.0',
                                        'MSXML2.XMLHTTP.3.0',
                                        'MSXML2.XMLHTTP',
                                        'Microsoft.XMLHTTP');
        for(var i = 0; i < xmlHttpVersions.length && !xmlHttp; i++) {
          try {
            xmlHttp = new ActiveXObject(xmlHttpVersions[i]);
          } catch(e) { }
        }
      }
        
      if(!xmlHttp) {
        alert("Das XMLHttpRequest-Object konnte nicht erstellt werden!");
      } else {
        return xmlHttp;
      }
    }
    function show_all_marker(bundesland_id) {
      if(xmlHttp) {
        try {
          if(bundesland_id != 0) {
            var parameter = "state=" + encodeURI(bundesland_id);
            xmlHttp.open("GET", "load_marker.php"+"?"+parameter, true);
            xmlHttp.onreadystatechange = handleRequest;
            xmlHttp.send(null);           
          }  
        } catch(e) {
          alert("Verbindung zum Server gescheitert:\n" + e.toString());
        }
      }
    }
    
    function handleRequest() {  
      if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
          try {      
            handleServerResponse();    
          } catch(e) {
            //alert("Fehler beim lesen der Antwort:\n" + e.toString());
          }
        } else {
          //alert("Es wurde ein Fehler bei der Abfrage festgestellt:\n" + xmlHttp.statusText);
        }
      }
    }
    
    function handleServerResponse() {    
      var xmlResponse = xmlHttp.responseXML;  
      if(!xmlResponse || !xmlResponse.documentElement) {
        // fängt Fehler beim IE und Opera ab
        throw("Fehlerhafter XML-Aufbau. \n" + xmlHttp.responseText);
      }
      
      var rootNodeName = xmlResponse.documentElement.nodeName;
      if(rootNodeName == "parsererror") {
        // fängt Fehler beim Firefox ab
        throw("Fehlerhafter XML-Aufbau. \n" + xmlHttp.responseText);
      }
      
      xmlRoot = xmlResponse.documentElement;  
      addressArray = xmlRoot.getElementsByTagName("address");   
      descArray = xmlRoot.getElementsByTagName("desc");   
      imageArray = xmlRoot.getElementsByTagName("image");   
      idArray = xmlRoot.getElementsByTagName("id");   
      xkoordArray = xmlRoot.getElementsByTagName("xkoord");   
      ykoordArray = xmlRoot.getElementsByTagName("ykoord");   
      
      
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        geocoder = new GClientGeocoder();
        // add controls
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
            map.addControl(new GOverviewMapControl());
        map.setCenter(new GLatLng(document.getElementById('lat').value,document.getElementById('lng').value),eval(document.getElementById('zoom').value));
  
        // add markers
        for(var i = 0; i < addressArray.length; i++) {
          var ort = addressArray.item(i).firstChild.data;
          var desc = descArray.item(i).firstChild.data;
          var id = idArray.item(i).firstChild.data;
          
          if(xkoordArray.item(i).hasChildNodes()) {
            var xkoord = xkoordArray.item(i).firstChild.data;
            xkoord *= 1;
          } else {
            var xkoord = "";
          }
          
          if(ykoordArray.item(i).hasChildNodes()) {
            var ykoord = ykoordArray.item(i).firstChild.data;
            ykoord *= 1;
          } else {
            var ykoord = "";
          }
          
          
          if(imageArray.item(i).hasChildNodes()) {
            var image = imageArray.item(i).firstChild.data;
            if(xkoord == "" || ykoord == "") {  
              //alert("addmarker Image");
              addMarker(""+ort+"",'<div class="google_map_popup"> <div class="float_left" width="50" height="100">'+image+'<\/div> <div style="margin-left: 10px">'+desc+'<br \/> <a href="projekte.php?action=projectdetail&amp;id='+id+'" title="zu den Projektdetails">zu den Projektdetails<\/a><\/div><\/div>');
            } else {
              //alert("addmarker_from_address Image"+xkoord+ykoord);
              addMarker(""+xkoord+","+ykoord+"",'<div class="google_map_popup"> <div class="float_left" width="50" height="100">'+image+'<\/div> <div style="margin-left: 10px">'+desc+'<br \/> <a href="projekte.php?action=projectdetail&amp;id='+id+'" title="zu den Projektdetails">zu den Projektdetails<\/a><\/div><\/div>');
            }
          } else {
            if(xkoord == "" || ykoord == "") { 
              //alert("addmarker");
              addMarker(""+ort+"",'<div class="google_map_popup"> <div class="float_left" width="50" height="100">&nbsp<\/div> <div style="margin-left: 10px">'+desc+'<br \/> <a href="projekte.php?action=projectdetail&amp;id='+id+'" title="zu den Projektdetails">zu den Projektdetails<\/a><\/div><\/div>');
            } else {
              //alert("addmarker_from_address"+xkoord+ykoord);
              addMarker(""+xkoord+","+ykoord+"",'<div class="google_map_popup"> <div class="float_left" width="50" height="100">&nbsp<\/div> <div style="margin-left: 10px">'+desc+'<br \/> <a href="projekte.php?action=projectdetail&amp;id='+id+'" title="zu den Projektdetails">zu den Projektdetails<\/a><\/div><\/div>');
            }
          }          
        }        
      }
      // Orte in das Feld "Ort" laden die in dem Bundesland liegen
      load_city(document.getElementById('state').value);   
    }    
    
    function load_state(value) {
      if (GBrowserIsCompatible()) {
        if (!value) {
            var bundesland_id = document.getElementById('bundesland').options[document.getElementById('bundesland').selectedIndex].value;
        } else {
            var bundesland_id = value;
        }
              
        if(bundesland_id == '1') {
          var lat = '48.56752';
          var lng = '9.030762';
          var zoom = '7';
        }
        
        if(bundesland_id == '2') {
          var lat = '49.380585';
          var lng = '11.494446';
          var zoom = '7';
        }
          
        if(bundesland_id == '3') {
          var lat = '52.522801';
          var lng = '13.41156';
          var zoom = '10';
        }
          
        if(bundesland_id == '4') {
          var lat = '52.282442';
          var lng = '13.368988';
          var zoom = '7';
        }
          
        if(bundesland_id == '5') {
          var lat = '53.073738';
          var lng = '8.810477';
          var zoom = '9';
        }
          
        if(bundesland_id == '6') {
          var lat = '53.55';
          var lng = '10';
          var zoom = '10';
        }
          
        if(bundesland_id == '7') {
          var lat = '50.73124';
          var lng = '9.121399';
          var zoom = '7';
        }
          
        if(bundesland_id == '8') {
          var lat = '53.699959';
          var lng = '12.744141';
          var zoom = '6';
        }
          
        if(bundesland_id == '9') {
          var lat = '52.845912';
          var lng = '9.165344';
          var zoom = '6';
        }
       
        if(bundesland_id == '10') {
          var lat = '51.508742';
          var lng = '7.921143';
          var zoom = '7';
        }
          
        if(bundesland_id == '11') {
          var lat = '50.007739';
          var lng = '7.149353';
          var zoom = '7';
        }
          
        if(bundesland_id == '12') {
          var lat = '49.365383';
          var lng = '6.954346';
          var zoom = '8';
        }
          
        if(bundesland_id == '13') {
          var lat = '51.082822';
          var lng = '13.680725';
          var zoom = '7';
        }
          
        if(bundesland_id == '14') {
          var lat = '51.971346';
          var lng = '11.508179';
          var zoom = '7';
        }
          
        if(bundesland_id == '15') {
          var lat = '54.260412';
          var lng = '9.673462';
          var zoom = '7';
        }
          
        if(bundesland_id == '16') {
          var lat = '50.739932';
          var lng = '11.079712';
          var zoom = '7';
        }
        
        document.getElementById('lat').value = lat;
        document.getElementById('lng').value = lng;
        document.getElementById('zoom').value = zoom;
        
        // set_state
        document.getElementById('state').value = bundesland_id;
        
        if(bundesland_id != 'xxx') {
          // show marker
          show_all_marker(bundesland_id);
        } else {
          load();
          load_city(bundesland_id);
        }  
        
        window.setTimeout("load_year_without_name()", 2000);
        
        //return false;
      }
    }    

    function load_city(bundesland_id) {
      if(xmlHttp) {
        try {
          var parameter = "state=" + encodeURI(bundesland_id);
          xmlHttp.open("GET", "load_city.php"+"?"+parameter, true);
          xmlHttp.onreadystatechange = handleRequest_city;
          xmlHttp.send(null);            
        } catch(e) {
          alert("Verbindung zum Server gescheitert:\n" + e.toString());
        }
      }
    }
    
    function handleRequest_city() {  
      if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
          try {      
            handleServerResponse_city();    
          } catch(e) {
            //alert("Fehler beim lesen der Antwort:\n" + e.toString());
          }
        } else {
          //alert("Es wurde ein Fehler bei der Abfrage festgestellt:\n" + xmlHttp.statusText);
        }
      }
    }
    
    function handleServerResponse_city() {    
      // Löscht alle Einträge aus der SelectBox
      for(var t = document.getElementById('name').length; t > 1; t--) {
        document.getElementById('name').options[t-1] = null;
      }  
          
      var xmlResponse = xmlHttp.responseXML;
      if(!xmlResponse || !xmlResponse.documentElement) {
        // fängt Fehler beim IE und Opera ab
        throw("Fehlerhafter XML-Aufbau. \n" + xmlHttp.responseText);
      }
      
      var rootNodeName = xmlResponse.documentElement.nodeName;
      if(rootNodeName == "parsererror") {
        // fängt Fehler beim Firefox ab
        throw("Fehlerhafter XML-Aufbau. \n" + xmlHttp.responseText);
      }
      
      xmlRoot = xmlResponse.documentElement;
      nameArray = xmlRoot.getElementsByTagName("name");
      namedescArray = xmlRoot.getElementsByTagName("namedesc");
      
      for(var i = 0; i < nameArray.length; i++) {
        var new_Option;
        new_Option = new Option(nameArray.item(i).firstChild.data,namedescArray.item(i).firstChild.data,false,false);
  
        document.getElementById('name').options[document.getElementById('name').length] = new_Option;     
      }        
    }
    
    function show_google_map(adresse) {
        if (GBrowserIsCompatible()) {
            document.getElementById("map_detail").style.display = "block";
            map = new GMap2(document.getElementById("map_detail"));
            geocoder = new GClientGeocoder();
            map.addControl(new GLargeMapControl());
            map.addControl(new GMapTypeControl());
            geocoder.getLatLng(
                adresse,
                function(point) {
                    if (!point) {
                        geocoder.getLocations(adresse, function (result) {
                            if (result.Status.code == G_GEO_SUCCESS) {
                                var blank = "";
                                var p = result.Placemark[0].Point.coordinates;
                                var newAddress='('+p[1]+','+p[0]+')';
                                map.setCenter(new GLatLng(p[1],p[0]), 15);
                                var marker = new GMarker(new GLatLng(p[1],p[0]),{title:adresse});
                                map.addOverlay(marker);
                                markers[markers.length]=marker;
                            } else {
                                var reason="Code "+result.Status.code;
                                alert('Could not find "'+adresse+ '" ' + reason);
                            }
                        }
                        );
                    } else {
                        map.setCenter(point, 15);
                    }
                }
            );
            addMarker(""+adresse+"","");
        }
    }
    
    
  iniBundesland = "";
  
  //--------------------------  Jahr laden bei Ortsauswahl ---------------------------\\ 
    function load_year() {
      if(xmlHttp) {
        try {
          var parameter = "name=" + encodeURI(document.getElementById('name').options[document.getElementById('name').selectedIndex].value);
          xmlHttp.open("GET", "load_year.php"+"?"+parameter, true);
          xmlHttp.onreadystatechange = handleRequest_year;
          xmlHttp.send(null);            
        } catch(e) {
          alert("Verbindung zum Server gescheitert:\n" + e.toString());
        }
      }
    }
    
    function handleRequest_year() {  
      if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
          try {      
            handleServerResponse_year();    
          } catch(e) {
            //alert("Fehler beim lesen der Antwort:\n" + e.toString());
          }
        } else {
          //alert("Es wurde ein Fehler bei der Abfrage festgestellt:\n" + xmlHttp.statusText);
        }
      }
    }
    
    function handleServerResponse_year() {    
      // Löscht alle Einträge aus der SelectBox
      for(var t = document.getElementById('jahr').length; t > 1; t--) {
        document.getElementById('jahr').options[t-1] = null;
      }  
          
      var xmlResponse = xmlHttp.responseXML;
      if(!xmlResponse || !xmlResponse.documentElement) {
        // fängt Fehler beim IE und Opera ab
        throw("Fehlerhafter XML-Aufbau. \n" + xmlHttp.responseText);
      }
      
      var rootNodeName = xmlResponse.documentElement.nodeName;
      if(rootNodeName == "parsererror") {
        // fängt Fehler beim Firefox ab
        throw("Fehlerhafter XML-Aufbau. \n" + xmlHttp.responseText);
      }
      
      xmlRoot = xmlResponse.documentElement;
      yearArray = xmlRoot.getElementsByTagName("year");
      for(var i = 0; i < yearArray.length; i++) {
        var new_Option;
        new_Option = new Option(yearArray.item(i).firstChild.data,yearArray.item(i).firstChild.data,false,false);
  
        document.getElementById('jahr').options[document.getElementById('jahr').length] = new_Option;     
      }        
    }
  
  
    function load_year_without_name() {
      if(xmlHttp) {
        try {
          var parameter = "bundesland=" + encodeURI(document.getElementById('bundesland').options[document.getElementById('bundesland').selectedIndex].value);
          xmlHttp.open("GET", "load_year_without_name.php"+"?"+parameter, true);
          xmlHttp.onreadystatechange = handleRequest_year_without_name;
          xmlHttp.send(null);            
        } catch(e) {
          alert("Verbindung zum Server gescheitert:\n" + e.toString());
        }
      }
    }
    
    function handleRequest_year_without_name() {  
      if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
          try {      
            handleServerResponse_year_without_name();    
          } catch(e) {
            //alert("Fehler beim lesen der Antwort:\n" + e.toString());
          }
        } else {
          //alert("Es wurde ein Fehler bei der Abfrage festgestellt:\n" + xmlHttp.statusText);
        }
      }
    }
    
    function handleServerResponse_year_without_name() {    
      // Löscht alle Einträge aus der SelectBox
      for(var t = document.getElementById('jahr').length; t > 1; t--) {
        document.getElementById('jahr').options[t-1] = null;
      }  
          
      var xmlResponse = xmlHttp.responseXML;
      if(!xmlResponse || !xmlResponse.documentElement) {
        // fängt Fehler beim IE und Opera ab
        throw("Fehlerhafter XML-Aufbau. \n" + xmlHttp.responseText);
      }
      
      var rootNodeName = xmlResponse.documentElement.nodeName;
      if(rootNodeName == "parsererror") {
        // fängt Fehler beim Firefox ab
        throw("Fehlerhafter XML-Aufbau. \n" + xmlHttp.responseText);
      }
      
      xmlRoot = xmlResponse.documentElement;
      yearArray = xmlRoot.getElementsByTagName("year");
      for(var i = 0; i < yearArray.length; i++) {
        var new_Option;
        new_Option = new Option(yearArray.item(i).firstChild.data,yearArray.item(i).firstChild.data,false,false);
  
        document.getElementById('jahr').options[document.getElementById('jahr').length] = new_Option;     
      }        
    }  




// Flash einbinden
var flashVersion = 0;
function getFlashVersion() {
    var maxFlashVersion = 25;
    var minFlashVersion = 6;
    var agent = navigator.userAgent.toLowerCase(); 
    // NS3 needs flashVersion to be a local variable
    if (((agent.indexOf("mozilla/3") != -1) && (agent.indexOf("msie") == -1)) || ((agent.indexOf("msie") != -1) && (agent.indexOf("mac") != -1))) {
        flashVersion = 0;
        return flashVersion;
    }
   
    // NS3+, Opera3+, IE5+ Mac (support plugin array):  check for Flash plugin in plugin array
    if (navigator.plugins != null && navigator.plugins.length > 0) {
        var flashPlugin = navigator.plugins['Shockwave Flash'];
        if (typeof flashPlugin == 'object') { 
            for (var i = maxFlashVersion; i >= minFlashVersion; i--) {
                if (flashPlugin.description.indexOf(i + '.') != -1) {
                    flashVersion = i;
                    break;
                }
            }
        }
    }
    // IE4+ Win32:  attempt to create an ActiveX object using VBScript
    else if ((agent.indexOf("msie") != -1) && (parseInt(navigator.appVersion) >= 4) && (agent.indexOf("win") != -1) && (agent.indexOf("16bit") == -1)) {
        var doc = '<scr' + 'ipt language="VBScript"\> \n';
        doc += 'On Error Resume Next \n';
        doc += 'Dim obFlash \n';
        doc += 'For i = '+maxFlashVersion+' To '+minFlashVersion+' Step -1 \n';
        doc += '   Set obFlash = CreateObject("ShockwaveFlash.ShockwaveFlash." & i) \n';
        doc += '   If IsObject(obFlash) Then \n';
        doc += '      flashVersion = i \n';
        doc += '      Exit For \n';
        doc += '   End If \n';
        doc += 'Next \n';
        doc += '</scr' + 'ipt\> \n';
        document.write(doc);
    } else flashVersion = -1;
    return flashVersion;
}
function insertFlashObject(id,src,width,height,name,bgcolor,imgsrc) {
    if (bgcolor.length == 0) bgcolor = '#ffffff';
    var canDo=0;
    if (getFlashVersion() >= 6) canDo = 1;
    if (canDo!=1) {
        if (imgsrc && imgsrc.length > 0) {
            document.write('<img src="'+imgsrc+'" border="0" alt="" />');
        }
    } else {
        document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="'+width+'" height="'+height+'" align=""');
        if (id.length > 0) document.write(' id="'+id+'"');
        if (name.length > 0) document.write(' name="'+name+'"');
        document.write('>\n');
        document.write('<param name="movie" value="'+src+'" />');
        document.write('<param name="menu" value="false" />');
        document.write('<param name="quality" value="high" />');
        document.write('<param name="scale" value="noborder" />');
        document.write('<param name="wmode" value="transparent" />');
        document.write('<param name="bgcolor" value="'+bgcolor+'" />');
        if ((id.length == 0) && (name.length > 0)) id = name;
        document.write('<embed src="'+src+'" menu="false" quality="high" scale="noborder" bgcolor="'+bgcolor+'" width="'+width+'" height="'+height+'" name="'+id+'" align="" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" wmode="transparent"></embed>');
        document.writeln('</object>');
    }
}
// Druckansicht
function showPrint(css) {
    header = document.getElementsByTagName("head")[0];
    var myLink = document.createElement("link");
    var linkRel = document.createAttribute("rel");
    var linkType = document.createAttribute("type");
    var linkHref = document.createAttribute("href");
    linkRel.nodeValue = "stylesheet";
    linkType.nodeValue = "text/css";
    linkHref.nodeValue = css;
    myLink.setAttributeNode(linkRel);
    myLink.setAttributeNode(linkType);
    myLink.setAttributeNode(linkHref);
    header.appendChild(myLink);
    return false;
}
// Cookie auslesen
function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) end = dc.length;
    return unescape(dc.substring(begin + prefix.length, end));
}
// Cookie setzen
function setCookie(name, value) {
    var expiration = new Date();
    var sevenDays = expiration.getTime() + (7 * 24 * 60 * 60 * 1000);
    expiration.setTime(sevenDays);
    var curCookie = name + "=" + escape(value) + ";expires=" + escape(expiration.toGMTString()) + ";";
    document.cookie = curCookie;
}
// Schrift vergrößern
function increaseFontsize() {
    value = getCookie("fontsize");
    if (value) {
        if (value < 2) {
            value = Math.abs(value) + 0.05;
        }
    } else {
        value = 0.625;
    }
    setCookie("fontsize",value);
    var idelement = document.getElementsByTagName("body")[0];
    idelement.style.fontSize = value + "em";
}
// Schrift verkleinern
function decreaseFontsize() {
    value = getCookie("fontsize");
    if (value) {
        if (value > 0.1) {
            value = value - 0.05;
        }
    } else {
        value = 0.625;
    }
    setCookie("fontsize",value);
    var idelement = document.getElementsByTagName("body")[0];
    idelement.style.fontSize = value + "em";
}
// Schrift auf Normalgröße setzen
function normalFontsize() {
    var idelement = document.getElementsByTagName("body")[0];
    idelement.style.fontSize = "0.625em";
    setCookie("fontsize","0.625");
}
// Schriftgröße initialisieren
function initFontsize() {
    value = getCookie("fontsize");
    if (!value) {
        value = "0.625";
    }
    var idelement = document.getElementsByTagName("body")[0];
    idelement.style.fontSize = value + "em";
}
// Stylesheet wechseln
function changeStyle(sheet) {
    setCookie("sheet",sheet);
    document.location.reload();
}
// Vorgabewert eines Formularfelds löschen
function clearField (thisfield, placeholder) {
    if (thisfield.value == placeholder) { thisfield.value = ''}
}
// gewähltes Stylesheet bestimmen und laden
value = getCookie("sheet");
if (value) {
    document.write("<link rel='stylesheet' type='text/css' media='screen' href='" + value + "' />");
}
