
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 (sa) {
    fixSVGScrollbars();
  }

  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") ? /*"/export/css/1/custom.css"*/ "" : "";
  createCSSHeaderTag(style, "cu_style");
  cu_sheet = document.getElementById("cu_style");

  style = (contrast == "wb") ? "/export/css/1/whiteblack.css" : "";
  createCSSHeaderTag(style, "wb_style");
  wb_sheet = document.getElementById("wb_style");

  style = (contrast == "bw") ? "/export/css/1/blackwhite.css" : "";
  createCSSHeaderTag(style, "bw_style");
  bw_sheet = document.getElementById("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 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()  {
  try {

    switch(contrast)  {
      case "off":

        // CSS-Referenzen im Header setzen
        if (!cu_sheet.href) {
          //cu_sheet.setAttribute("href", "/export/css/1/custom.css"); -->ausgeblendet, da netzwerkfehler
        }

        wb_sheet.disabled = true;
        bw_sheet.disabled = true;

        if (svg) {
          for (var i = 0, max = svgColors.length; i < max; i++) {
            if (!!document.getElementById("obj" + svgColors[i][0])) {
              fillSVG("obj" + svgColors[i][0], svgColors[i][1]);
            }
          }

          // Farben für Hovereffekt setzen
          if (!!document.getElementById("toolbar")) {
            tbColorsHvr = svgColors[4][1];
          }
        }
        else {  // Bitmaps setzen

          // UFZ-Logo
          if (bmpLogo){
            if (!!document.getElementById ('imglogo')) {
              document.getElementById ('imglogo').src = bmpLogo;
            }
          }

          // submenu-Logos (nur www.ufz.de)
          if (document.getElementById("obj12466"))  {
            var hhBMP = language == "de" ? "[§fgetpicr_19169/e§]" : "[§fgetpicr_19463/e§]";  // Helmholtz-Logo ist sprachabhängig
            var smBMP = new Array(hhBMP, "[§fgetpicr_19179/e§]", "[§fgetpicr_19167/e§]");  // Helmholtz, PEER, EMAS

            for (var i = 0, max = smBMP.length; i < max; i++) {
              if (typeof svgColors[i + 1][0] != 'undefined') {
                var imgObj = document.getElementById("img" + svgColors[i + 1][0]);
                if (imgObj)
                  imgObj.src = smBMP[i];
              }
            }
          }

          // toolbar
          if (!!document.getElementById('toolbar')) {
            if (!!document.getElementById('imglogo')) {
              for (var i = 1; i <= 7; i++) {
                document.getElementById("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", "/export/css/1/blackwhite.css");
        }

        wb_sheet.disabled = true;
        bw_sheet.disabled = false;

        if (svg) {
          for (var i = 0, max = svgColorsBW.length; i < max; i++) {
            if (document.getElementById("obj" + svgColorsBW[i][0]))
              fillSVG("obj" + svgColorsBW[i][0], svgColorsBW[i][1]);
          }

          // Farben für Hovereffekt setzen
          if (document.getElementById("toolbar"))
            tbColorsHvr = tbColorsHvrBW;
        }
        else {  // Bitmaps setzen
          // UFZ-Logo
          if (bmpLogoBW)
            document.getElementById("imglogo").src = bmpLogoBW;

          // submenu-Logos (nur www.ufz.de)
          if (document.getElementById("obj12466")) {
            var hhBMP = language == 'de' ? "[§fgetpicr_19660/e§]" : "[§fgetpicr_19666/e§]";  // Helmholtz-Logo ist sprachabhängig
            var smBMP = new Array(hhBMP, "[§fgetpicr_19662/e§]", "[§fgetpicr_19664/e§]");  // Helmholtz, PEER, EMAS

            for (var i = 0, max = smBMP.length; i < max; i++) {
              var imgObj = document.getElementById("img" + svgColors[i + 1][0]);
              if (imgObj)
                imgObj.src = smBMP[i]
            }
          }

          // toolbar
          if (!!document.getElementById('toolbar')) {
            if (!!document.getElementById('imglogo')) {
              for (var i = 1; i <= 7; i++) {
                document.getElementById("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", "/export/css/1/whiteblack.css");
        wb_sheet.disabled = false;
        bw_sheet.disabled = true;

        if (svg) {
          for (var i = 0, max = svgColorsWB.length; i < max; i++) {
            if (document.getElementById("obj" + svgColorsWB[i][0])) {
              fillSVG("obj" + svgColorsWB[i][0], svgColorsWB[i][1]);
            }
          }

          // Farben für Hovereffekt setzen
          if (!!document.getElementById("toolbar")) {
            tbColorsHvr = tbColorsHvrWB;
          }
        }
        else {  // Bitmaps setzen
          // UFZ-Logo
          if (bmpLogoWB)
            document.getElementById("imglogo").src = bmpLogoWB;

          // submenu-Logos (nur www.ufz.de)
          if (!!document.getElementById("obj12466")) {
            var hhBMP = language == 'de' ? "[§fgetpicr_19659/e§]" : "[§fgetpicr_19667/e§]";  // Helmholtz-Logo ist sprachabhängig
            var smBMP = new Array(hhBMP, "[§fgetpicr_19663/e§]", "[§fgetpicr_19665/e§]");  // Helmholtz, PEER, EMAS

            for (var i = 0, max = smBMP.length; i < max; i++) {
              var imgObj = document.getElementById("img" + svgColors[i + 1][0]);
              if (imgObj) {
                imgObj.src = smBMP[i]
              }
            }
          }

          // toolbar
          if (!!document.getElementById('toolbar')) {
            if (!!document.getElementById('imglogo')) {
              for (var i = 1; i <= 7; i++) {
                document.getElementById("img" + svgColors[i][0]).src = tbImgsBW[i - 1];
              }
            }

            stdPng = tbImgsBW;
            hvrPng = tbImgsWB;
          }
        }
        break;
    }

    if(printer)  {
      printer = false;
      window.setTimeout("window.print()", 1000);
    }
  } catch (e) {
  }
}

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, max = temp.length; i < max; 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", "clipPath");

  if(init) { // nur wenn svg richtig initialisiert

    // Farben des Elements aendern oder zuruecksetzen
    for(var i = 0, maxI = shapes.length; i < maxI; i++)  {
      var temp = init.getElementsByTagName(shapes[i]);

      for (var j = 0, maxJ = temp.length; j < maxJ; j++) { // alle Tags im SVG durchlaufen
        for(var k = 0, maxK = logoColors.length; k < maxK; 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 fixSVGScrollbars () {
  var objects = document.getElementsByTagName ('object'),
      style = null,
      fileContent = null,
      svg = null,
      width = 0,
      height = 0;

  for (var i = objects.length; i--;) {
     fileContent = objects[i].contentDocument;
     svg = fileContent.getElementsByTagName ('svg')[0];
     width = (objects[i].offsetWidth);
     height = (objects[i].offsetHeight);
     style = fileContent.getElementsByTagName ('style')[0];

     svg.setAttribute ('height', height);
     svg.setAttribute ('width', width);

     style.textContent += '::-webkit-scrollbar { display:none; }';
  }
}


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").css('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
    )

    if (!!document.getElementById('wrapper') && !!document.getElementById('main')) {
      document.getElementById('wrapper').style.height = document.getElementById('main').offsetHeight + "px";
    }
}


function getSearchResults(value) {
  sendAjaxRequest("get", "index.php?comaapi=search&mbasis_searchquery=" + escape(value) + "&mbasis_searchstart=0&mbasis_searchlang=2&mbasis_searchrootpid=1", 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 */

