var ie           = false;
var ie6          = false;
var ie7          = false;
var ie8          = false;
var ff           = false;
var ff_ver       = 0;
var op           = false;
var op_ver       = 0;
var sa           = false;
var sa_ver       = 0;
var css          = false;
var svg          = false;
var contrast     = "off";
var printer      = false;

var stdPng = new Array();
var hvrPng = new Array();
var tbColorsHvr = new Array();

var percent      = 95;
var fs_start     = 15.2;
var pixel        = 15.2;

var bmpLogo      = "";
var bmpLogoBW    = "";
var bmpLogoWB    = "";

// +++++++++++++++++++++ mainscript +++++++++++++++++++++
window.onload   = init;
window.onunload = setCookie;
window.onresize = checkScrolling;

checkEnv();
setValues();
headContent();

function init() {
  
  for(var i = 0; i < svgColors.length; i++)  {
    if(initSVG("obj" + svgColors[i][0]))  {
      svg = true;
      break;
    }
  }
  
  setEvents();
  setContrast();

  if(ff && !document.cookie)  {
    var temp = document.defaultView.getComputedStyle(document.body,'').getPropertyValue('font-size');
    fs_start = temp.substr(0, temp.length - 2);
    pixel = fs_start;
  }

  setFontSize();    
  checkScrolling();
  correctRightLine();

  /* ErrorCatcher - muss am Ende stehen! */
  if(location.search.match('debug=')) {
    ec_sendErr('');
  }
  /* EC ENDE */
}
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++

function checkEnv()  {
  ie  = /MSIE/.test(navigator.userAgent)    ? true : false;
  ie6 = /MSIE 6/.test(navigator.userAgent)  ? true : false;
  ie7 = /MSIE 7/.test(navigator.userAgent)  ? true : false;
  ie8 = /MSIE 8/.test(navigator.userAgent)  ? true : false;
  ff  = /Firefox/.test(navigator.userAgent) ? true : false;
  op  = /Opera/.test(navigator.userAgent)   ? true : false;
  sa  = /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent)  ? true : false;
  
  if(ff)  {  // Firefox Version ermitteln
    /Firefox\/(.+?\.\d)/.exec(navigator.userAgent);
    ff_ver = RegExp.$1;
  }
  if(op)  {  // Opera Version ermitteln
    /Opera\/(.+?)\.(.+?) /.exec(navigator.userAgent);
    op_ver = RegExp.$1 + "." + RegExp.$2.replace(/\./g, ""); 
  }
  if (sa) {  // Safari Version ermitteln
    /Version\/(.+?)\//.exec(navigator.userAgent);
    sa_ver = RegExp.$1.split(" ")[0];  }

  printer = /action=print/.test(document.URL) ? true : false;

  css = !document.getElementsByTagName("link")[0].disabled;
}

function setValues()  {
  if(document.cookie)  {                                  // wenn Cookie vorhanden dann  
    contrast = getCookie()[0] != "undefined"              // falls im Cookie "undefined" steht auf Standardwerte setzen
            && typeof(getCookie()[0]) != "undefined" 
             ? getCookie()[0] : "off";                    // oder Wert aus Cookie setzen
   
     percent = getCookie()[1] != "undefined"
            && typeof(getCookie()[1]) != "undefined"
             ? getCookie()[1] : 95; 
         
       pixel = getCookie()[2] != "undefined"
            && typeof(getCookie()[2]) != "undefined"
             ? getCookie()[2] : 15.2; 
     
    fs_start = getCookie()[3] != "undefined"
            && typeof(getCookie()[3]) != "undefined"
             ? getCookie()[3] : 15.2;                                         
  }

  bmpLogo   = language == "de" ? bmpLogoDE   : bmpLogoEN;
  bmpLogoBW = language == "de" ? bmpLogoBWDE : bmpLogoBWEN;
  bmpLogoWB = language == "de" ? bmpLogoWBDE : bmpLogoWBEN;
}

var cu_sheet, bw_sheet, wb_sheet;  // globale Objekte fuer Kontrast-StyleSheets deklarieren
function headContent()  {          // fuegt CSS-Link fuer contrast.css ein (wird nur bei JS-enabled gebraucht)                             
  var style = "";

  style = (contrast == "off") ? "/data/custom_web_1.css" : ""; 
  createCSSHeaderTag(style, "cu_style");
  cu_sheet = $("cu_style");

  style = (contrast == "wb") ? "/data/whiteblack_web_1.css" : "";  
  createCSSHeaderTag(style, "wb_style");
  wb_sheet = $("wb_style");

  style = (contrast == "bw") ? "/data/blackwhite_web_1.css" : "";
  createCSSHeaderTag(style, "bw_style");
  bw_sheet = $("bw_style");
}

function getContent()  {
  return document.URL + "&&false&&true";
}
 
function setEvents()  {
  if(document.getElementById("search"))  {
    with(document.getElementById("search"))  {
      if(ie)  {
        eval("onclick = function() { if (value == 'Suchbegriff' || value == 'keyword') this.value=''; }");            
      }
      else  {
        setAttribute("onclick", "if (value == 'Suchbegriff' || value == 'keyword') this.value=''");
      }  
    }
  }
}

function onPrint()  {
  var tmp = "&amp;action=print&amp;contrast=" + contrast;
  var param = /\?/.test(document.URL) ? tmp : "?" + tmp;
  var fenster = window.open(this.location + param, "", "scrollbars=yes, width=1024, height=768, left=0, top=0");
  
  fenster.focus();
}
function prepareForPrint()  {

  // print.css ausschalten
  if($("printstyle"))
    $("printstyle").href = "dummy.css";
  
  // auszublendende Elemente definieren
  var tmp;
  var objects = new Array(
  "titleline",
  "colwhit",
  "colblue",
  "colopac",
  "topline",
  "mainmenu",
  "submenu",
  "languages",
  "titlenav",
  "bottomline",
  "searchbox",
  "searchline",
  "toolbar",
  "footer",
  "column"); 
                   
  // Elemente ausblenden                
  for(var i = 0; i < objects.length; i++)  {
    tmp = document.getElementById(objects[i]);
    if(tmp)
      tmp.style.display = "none";
  }

  var objects = new Array("wrapper", "main", "title");    
  for(var i = 0; i < objects.length; i++)  {
    tmp = document.getElementById(objects[i]);
    if(tmp)
      tmp.style.backgroundImage = "none";
  }
   
  // Titel umbauen 							
  $("content").style.margin = "0";          // damit content in einer Linie ist
  $("content").style.width = "100%";
  $("main").style.border = "none";          // blendet seitliche Linien aus
  $("titletext").style.marginTop = "0";     // Kein Abstand zwischen Titel und oberem Rand
  $("titletext").style.paddingTop = "1em";  // Text vertikal mittig
  $("breadcrumb").style.paddingLeft = "0";
  
  // verhindert das eine Seite zuviel gedruckt wird
  if(ff)
    document.documentElement.style.height = "1%";

  // Kontrast übernehmen und verhindern dass Weiss auf Schwarz gedruckt wird
  var param = location.search.split("contrast=")[1];  
  contrast = param != "wb" ? param : "bw";
}

function help()  {
  location.href = !/:8080/.test(document.URL) ? "/index.php?de=" + helpId : "../hilfe.htm";
}

function changeContrast()  {  // Kontrast-Modi aendern (off -> bw -> wb -> off)
  switch(contrast)  {
    case "off":
      contrast = "bw";
    break;  
    case "bw":
      contrast = "wb";
    break;  
    case "wb":
      contrast = "off";
    break;    
    default:
      contrast = "off";
    break;
  }
  setContrast();
}

function setContrast()  {
  
  if(printer) prepareForPrint();

  switch(contrast)  {
    case "off":

      // CSS-Referenzen im Header setzen
      if (!cu_sheet.href)
        cu_sheet.setAttribute("href", "/data/custom_web_1.css");
      wb_sheet.disabled = true;
      bw_sheet.disabled = true;

      if (svg) {
        for (var i = 0; i < svgColors.length; i++) {
          if ($("obj" + svgColors[i][0]))
            fillSVG("obj" + svgColors[i][0], svgColors[i][1]);
        }

        // Farben für Hovereffekt setzen
        if ($("toolbar"))
          tbColorsHvr = svgColors[4][1];
      }
      else {  // Bitmaps setzen
        // UFZ-Logo
        if (bmpLogo && $("imglogo"))
          $("imglogo").src = bmpLogo;

        // submenu-Logos (nur www.ufz.de)
        if ($("obj12466"))  {
          var hhBMP = language == "de" ? "/data/19169.png" : "/data/19463.png";  // Helmholtz-Logo ist sprachabhängig
          var smBMP = new Array(hhBMP, "/data/19179.png", "/data/19167.png");  // Helmholtz, PEER, EMAS

          for (var i = 0; i < smBMP.length; i++) {
            var imgObj = $("img" + svgColors[i + 1][0]);
            if (imgObj)
              imgObj.src = smBMP[i]
          }
        }

        // toolbar
        if ($("toolbar")) {
          for (var i = 1; i <= 7; i++)
            $("img" + svgColors[i][0]).src = tbImgs[i - 1];

          stdPng = tbImgs;
          hvrPng = tbImgsHvr;
        }
      }
      break;

    case "bw":
      // CSS-Referenzen im Header setzen
      if (!bw_sheet.href) bw_sheet.setAttribute("href", "/data/blackwhite_web_1.css");
      wb_sheet.disabled = true;
      bw_sheet.disabled = false;

      if (svg) {
        for (var i = 0; i < svgColorsBW.length; i++) {
          if ($("obj" + svgColorsBW[i][0]))
            fillSVG("obj" + svgColorsBW[i][0], svgColorsBW[i][1]);
        }

        // Farben für Hovereffekt setzen
        if ($("toolbar"))
          tbColorsHvr = tbColorsHvrBW;
      }
      else {  // Bitmaps setzen
        // UFZ-Logo
        if (bmpLogo && $("imglogo"))
          $("imglogo").src = bmpLogoBW;

        // submenu-Logos (nur www.ufz.de)
        if ($("obj12466")) {
          var hhBMP = language == 'de' ? "/data/19660.png" : "/data/19666.png";  // Helmholtz-Logo ist sprachabhängig
          var smBMP = new Array(hhBMP, "/data/19662.png", "/data/19664.png");  // Helmholtz, PEER, EMAS

          for (var i = 0; i < smBMP.length; i++) {
            var imgObj = $("img" + svgColors[i + 1][0]);
            if (imgObj)
              imgObj.src = smBMP[i]
          }
        }

        // toolbar
        if ($("toolbar")) {
          for (var i = 1; i <= 7; i++)
            $("img" + svgColors[i][0]).src = tbImgsWB[i - 1];

          stdPng = tbImgsWB;
          hvrPng = tbImgsBW;
        }
      }
      break;

    case "wb":
      // CSS-Referenzen im Header setzen
      if (!wb_sheet.href) wb_sheet.setAttribute("href", "/data/whiteblack_web_1.css");
      wb_sheet.disabled = false;
      bw_sheet.disabled = true;

      if (svg) {
        for (var i = 0; i < svgColorsWB.length; i++) {
          if ($("obj" + svgColorsWB[i][0]))
            fillSVG("obj" + svgColorsWB[i][0], svgColorsWB[i][1]);
        }

        // Farben für Hovereffekt setzen
        if ($("toolbar"))
          tbColorsHvr = tbColorsHvrWB;
      }
      else {  // Bitmaps setzen
        // UFZ-Logo
        if (bmpLogo && $("imglogo"))
          $("imglogo").src = bmpLogoWB;

        // submenu-Logos (nur www.ufz.de)
        if ($("obj12466")) {
          var hhBMP = language == 'de' ? "/data/19659.png" : "/data/19667.png";  // Helmholtz-Logo ist sprachabhängig
          var smBMP = new Array(hhBMP, "/data/19663.png", "/data/19665.png");  // Helmholtz, PEER, EMAS

          for (var i = 0; i < smBMP.length; i++) {
            var imgObj = $("img" + svgColors[i + 1][0]);
            if (imgObj)
              imgObj.src = smBMP[i]
          }
        }

        // toolbar
        if ($("toolbar")) {
          for (var i = 1; i <= 7; i++)
            $("img" + svgColors[i][0]).src = tbImgsBW[i - 1];

          stdPng = tbImgsBW;
          hvrPng = tbImgsWB;
        }
      }
      break;
  }

  if(printer)  {
    printer = false;
    window.setTimeout("window.print()", 1000);
  }
}

var last_action;                                              // globale Variable fuer letzte Aktion deklarieren
function changeFontSize(action)  {
  if(action != "reset")  {                                    // wenn nicht Schriftgroesse zuruecksetzen geklickt wurde
    var op = action == "bigger" ? "+" : "-";                  // Operator bestimmen
    if(document.defaultView)  {                               // fuer Firefox & Co.
      // aktuelle Schriftgroesse (px) im Firefox ermitteln - Dank an Thomas Lange
      var temp = parseInt(document.defaultView.getComputedStyle(document.body,'').getPropertyValue('font-size'));
      if(temp > 9 && temp < 29 || action != last_action)  {      
        pixel = eval(temp + op + 1);           // Quelle: http://aktuell.de.selfhtml.org/weblog/schriftgroesse
      } 
    }
    else if(document.body.currentStyle)  {                    // fuer IE
      // aktuelle Schriftgroesse (%) im IE ermitteln
      var temp = parseInt(document.body.currentStyle.fontSize);
      if(temp > 65 && temp < 180 || action != last_action)  {
        percent = eval(temp + op + 5);                        // Schriftgroesse um 5% aendern (je nach Operator)
      }
    }
  }
  else  {
    percent = 95;
    
    pixel = parseInt(pixel);
    pixel = pixel > fs_start ? pixel - Math.abs(fs_start - pixel)
                             : pixel + Math.abs(fs_start - pixel);  // bei Reset wieder auf urspruengliche Schriftgroesse setzen
  }
  setFontSize();                                                    // ermittelte Schriftgroesse setzen
  last_action = action;                                             // letzte Aktion merken (z.B. bigger)
}

function setFontSize()  {
  if(document.body.currentStyle) {
    if(isNaN(percent)) percent = parseInt(percent);
    if(isNaN(percent)) percent = 95;
  
    document.body.style.fontSize =  percent + "%";
  } 

  if(document.defaultView)  {
    if(isNaN(pixel)) pixel = parseInt(pixel);
    if(isNaN(pixel)) pixel = 15.2;

    document.body.style.fontSize = pixel + "px";
  }
}

function setCookie()  {
  var year    = 1000 * 60 * 60 * 24 * 365;
  var now     = new Date();
  var expires = new Date(now.getTime() + year);

  document.cookie = "UFZintern=Kontrast:" + contrast + "&Fontsize:" + percent + "&Fontsize2:"+ pixel +"&Fontsize_Start:"+ fs_start +"; expires=" + expires.toGMTString() + ";";
}

function getCookie()  {
  var temp = document.cookie.split("=")[1].split("&");
  var values = new Array();
  for(var i = 0; i < temp.length; i++)  {
    values[i] = temp[i].split(":")[1];
  }
  return values;
}

var svgDoc = null;
function initSVG(id)  {            
  var obj = document.getElementById(id);
  if(obj)  {
    try  {
      if(ie)
        svgDoc = obj.getSVGDocument();  // IE object-Tag
      else
        svgDoc = obj.contentDocument;  // FF object-Tag
    }
    catch(e)  {
      //alert("Fehler bei der SVG-Initialisierung!");        
    }  
  }
  return svgDoc;              
}

function fillSVG(id, logoColors) {

  var init = initSVG(id);
  var shapes = new Array("rect", "polygon", "path", "circle", "ellipse"); 

  if(init) { // nur wenn svg richtig initialisiert
  
    // Farben des Elements aendern oder zuruecksetzen
    for(var i = 0; i < shapes.length; i++)  {
      var temp = init.getElementsByTagName(shapes[i]);

      for (var j = 0; j < temp.length; j++) { // alle Tags im SVG durchlaufen
        for(var k = 0; k < logoColors.length; k++) { // alle Farben durchlaufen     

          if(logoColors[0]) {
            var reg = new RegExp("color" + (k + 1)); // Namen der Klassen in der svg z.B. color1, color2 ...
            var svg_style = "fill: " + logoColors[k] + ";"; // Farbe auf uebergebene Farbe setzen 
          }
          else {
            var reg = new RegExp("color"); // alle Elemente, die eine Standardfarbe (color#) besitzen wieder auf Standard setzen
            var svg_style = "";  // setzt style zurueck
          }

          if (reg.test(temp.item(j).getAttribute("class"))) {
            temp.item(j).setAttribute("style", svg_style);
          }  
        } 
      }
    }
  }
}
function fixSVGScaling(svgDoc)  {
  with (svgDoc)  {
    var peaces = getAttribute("viewBox").split(" ");
    if(sa)  {
      if (sa_ver < 5)  {
        getElementsByTagName("style")[0].firstChild.data += "svg  {\n  background-color: #00589C;\n};\n::-webkit-scrollbar  {\n  display: none;\n}";
        setAttribute("width", peaces[2] + "px");
        setAttribute("height", peaces[3] + "px");
      }
      else  {
        currentScale = 1;
      }
    }
  }
}
function checkScrolling()  {
  if(!ie6)  {  // rückt im IE6 Footer nach links
    var bodyHeight    = document.documentElement.clientHeight;
    var contentHeight = !ie6
                      ? document.documentElement.scrollHeight
                      : document.body.offsetHeight;
    if($("toplink"))
      $("toplink").style.visibility = contentHeight <= bodyHeight
                                    ? "hidden" 
                                    : "visible";
    }
}

function setSVGAttributes(i, art, colors)  {
  var ref = eval(art + "Link[" + i + "]");
  with(ref)  {
    if(ie)  {
      eval("onmouseover = function() { fillSVG('" + art + i + "', Array('" + colors[0] + "', '" + colors[1] + "')); }");            
      eval("onmouseout =  function() { fillSVG('" + art + i + "', Array('" + colors[1] + "', 'None')); }");
    }
    else  {
      setAttribute("onmouseover", "if(typeof(fillSVG) == 'function') fillSVG('" + art + i + "', Array('" + colors[0] + "', '" + colors[1] + "'))");
      setAttribute("onmouseout",  "if(typeof(fillSVG) == 'function') fillSVG('" + art + i + "', Array('" + colors[1] + "', 'None'))");
    }  
  }
}

function setBlankMethod(i, art)  {
  var ref = eval(art + "Link[" + i + "]");
  ref.onclick = function() { window.open(this.href); return false; }   
}

function getAlterIMG(linkid, hoverid, classes, width, height)  {
  var styles = classes ? " class=" + classes + "" : "";

  var alterIMG = "<span class=\"linkimage\">"
               + "<img src=\"" + linkid + "\" width=\"" + width + "\" height=\"" + height + "\"" + styles + " />"
               + "</span>";             
  if(css)  {
    alterIMG += "<span class=\"hoverimage\">"
              + "<img src=\"" + hoverid + "\" width=\"" + width + "\" height=\"" + height + "\"" + styles + " />"
              + "</span>";
  }
  return alterIMG;
}

function targetBlank(href)  {
  window.open(href);
  return false;
}

function isASVInstalled()  {
  try  {
    var asv = new ActiveXObject("Adobe.SVGCtl");
    return true;
  }
  catch(ex)  {
  }
  return false;
}

// setzt wrapper und main auf gleiche Höhe um die rechte vertikale Linie nach unten zu ziehen
function correctRightLine()  {
  if(
     !ie6 &&           // beim ie6 nicht notwendig
     !(ff && printer)  // beim ff wird beim Druck eine Seite zuviel ausgegeben
    )
    document.getElementById('wrapper').style.height = document.getElementById('main').offsetHeight + "px";
}


function getSearchResults(value) {
  sendAjaxRequest("get", "search/search.php?query=" + escape(value) + "&start=0", true, searchCallback);
}
function searchCallback(obj) {
  if (obj && obj.readyState == 4) {
    document.getElementById("content").innerHTML = obj.responseText;
  }
}

/* ErrorCatcher */
// Sendet Ajax Request
function ec_sendErr(sErr) 
{
  var pattern = /debug=([0-9]+)/;
  var matches = location.search.match(pattern);
  var id = matches[1];

  sendAjaxRequest('post', 'htmltopdf/ErrorCatcher/errorcatcher.php?id=' + id + sErr, true);
}

// onError Eventhandler; baut Fehlermeldung zusammen
function ec_onErr(error, url, line)
{
  // Parameter zusammenbaun
  if(error.name) {
    params = '&err=' + escape(error.message) + '&line=' + escape(error.lineNumber);
  }
  else if(error) {
    params = '&err=' + escape(error) + '&line=' + escape(line);
  }
    
  ec_sendErr(params);
}
/* EC ENDE */
