/* Javascript-Funktionen welche sowohl in den Webauftritten
wie auch im administrativen Bereich benoetigt werden */

// PDF
var pdfFilename = "";
var showPDF = "false";
var savePDF = "true";
var pdfMail = "";
var mailDebug = "false";

//Helpbutton
var split_id = "";
var body_obj = document.compatMode == "CSS1Compat" ? document.documentElement : document.body;
var button, id;

//window events - Funktion Help aufrufen
if (window.addEventListener) {
  window.addEventListener('load', Help, false);
} else if (window.attachEvent) {
  window.attachEvent('onload', Help);
}

// Ajax-Funktionen
function createAjaxRequest() {
  try {
    var request = new XMLHttpRequest();
  }
  catch (ex) {
    try {
      var request = new ActiveXObject("MSXML2.XMLHTTP");
    }
    catch (ex) {
      var request = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  return request;
}

function sendAjaxRequest(method, url, asynchron, responseHandler) {
  var resObject = createAjaxRequest();

  if (responseHandler)
    resObject.onreadystatechange = function () {
      responseHandler(resObject);
    }

  if (method.toLowerCase() == "get") {
    resObject.open(method, url, asynchron);
    resObject.send(null);
  }
  else if (method.toLowerCase() == "post") {
    var toSend = url.split("?");

    resObject.open(method, toSend[0], asynchron);
    resObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    if (toSend[1]) {
      resObject.setRequestHeader("Content-length", toSend[1].length);
      resObject.send(toSend[1]);
    }
    else {
      resObject.send(null);
    }
  }
  else {
    alert("Fehler bei der Parameterübergabe!");
  }

  if (!asynchron && responseHandler)
    responseHandler(resObject);
}

/* PDF-Funktionen */
function createPDF(args) {

  var icon = "/data/16006";
  var message = "PDF wird erzeugt...";
  var smalltext = "Sie können diese Meldung<br />" +
                  "schliessen. Eventuell folgende<br />" +
                  "Prozesse starten automatisch!";

  if (document.getElementById("createpdf") == null) {
    buildIndikator(icon, message, smalltext);
  }
  else {
    changeIndikator(icon, message, smalltext);
    document.getElementById("createpdf").style.display = "inline";
  }

  // uebergebene Parameter merken
  var arr = args.split("&&");
  var source = arr[0];  // uebergebene Source
  var noheader = arr[1];  // wird "noheader" übergeben erzeugt das PDF Tool keinen Header (nur bei UFZ Seiten relevant)
  savePDF = arr[2];  // PDF zum Download anbieten?
  pdfMail = arr[3];  // als Email versenden
  mailDebug = arr[4];

  try {
    sendAjaxRequest("post", "htmltopdf/coma.createpdf.php?source=" + encodeURIComponent(source) + "&header=" + noheader, true, handlePDFResponse);
  }
  catch (ex) {
  }
}

/**
* @brief    Erzeugt eine PDF Datei und übergibt den Response an die CallBackFunktion. 
*
* @param    createIndikator    true/false    Bei true wird die normale "PDF wird erzeugt"-Meldung angezeigt.
* @param    noheader           true/false    Bei true wird der UFZ-Header weggelassen.
*
* @return   Im Erfolgsfall kommt der Name der PDF-Datei zurück.
*/
function createPDFAndGetName(source, callbackFunction, createIndikator, noheader) {

  noheader = (noheader) ? '&header=noheader' : '';

  var icon = "/data/16006";
  var message = "PDF wird erzeugt...";
  var smalltext = "Sie können diese Meldung<br />" +
                  "schliessen. Eventuell folgende<br />" +
                  "Prozesse starten automatisch!";

  if (createIndikator == true) {
    if (document.getElementById("createpdf") == null) {
      buildIndikator(icon, message, smalltext);
    }
    else {
      changeIndikator(icon, message, smalltext);
      document.getElementById("createpdf").style.display = "inline";
    }
  }

  sendAjaxRequest("post", "htmltopdf/coma.createpdf.php?source=" + encodeURIComponent(source) + noheader, false, callbackFunction);
}

function handlePDFResponse(resObject) {

  if (resObject.readyState == 4 && resObject.responseText != "") {
    pdfFilename = resObject.responseText;

    if (showPDF == "true") {
      location.href = "htmltopdf/out/" + pdfFilename;
    }
    else if (savePDF == "true") {
      location.href = "htmltopdf/coma.savepdf.php?filename=" + pdfFilename;
    }
    if (typeof (pdfMail) != "undefined") {

      var message = "Email/Fax versenden...";
      var icon = "/data/16065";
      var smalltext = "Bei Fehlern erhalten<br />" +
                      "Sie eine entsprechende<br />" +
                      "Meldung!";
      changeIndikator(icon, message, smalltext);

      var mailargs = pdfMail.split(";");

      var params = "?";
      params += "mailfrom=" + mailargs[0];
      params += "&";
      params += "mailto=" + mailargs[1];
      params += "&";
      params += "mailsubject=" + mailargs[2];
      params += "&";
      params += "mailcontent=" + mailargs[3];
      params += "&";
      params += "filepath=" + "/www/data/" + pdfFilename;
      params += "&";
      params += "debug=" + mailDebug;

      sendAjaxRequest("get", "htmltopdf/coma.sendpdf.php" + params, true, handleMailResponse);
    }
    else {
      document.getElementById("createpdf").style.display = "none";
    }
  }
}

function handleMailResponse(resObject) {
  if (resObject.readyState == 4) {
    if (resObject.responseText == "") {
      var message = "Email/Fax versandt!";
      var icon = "/data/16065";
      var smalltext = "Die Übermittlung Ihrer Daten<br />" +
                      "ist erfolgreich verlaufen.";
      changeIndikator(icon, message, smalltext);
    }
    else {
      var message = "Email/Fax nicht versandt!";
      var icon = "/data/16065";
      var smalltext = "Die Übermittlung Ihrer Daten war<br />" +
                      "nicht erfolgreich. Benachrichtigen<br />" +
					  "Sie bitte die WKDV!";
      changeIndikator(icon, message, smalltext);
    }
  }
}

function buildIndikator(icon, message, smalltext) {
  var createpdf_div = document.createElement("div");
  createpdf_div.id = "createpdf";

  createpdf_div.innerHTML =
  '<img src="/data/16063" onclick="document.getElementById(\'createpdf\').style.display=\'none\'"' +
	                            'onmouseover="this.src=\'/data/16064\'"' +
							    'onmouseout="this.src=\'/data/16063\'"' +
  'width="14" height="14" alt="Schliessen" title="Schliessen" id="closecross" />' +

  '<img src="' + icon + '" class="floatright clearright" width="28" height="32" alt="' + message + '" title="' + message + '" id="indicon" />' +
  '<p id="indtodo">' + message + '</p>' +
  '<p id="indtext">' + smalltext + '</p>';

  document.body.appendChild(createpdf_div);

  with (document.getElementById("createpdf").style) {
    top = (getBodyDimension()['hoehe'] / 2) - 15 + "px";
    left = (getBodyDimension()['breite'] / 2) - 90 + "px";
  }
}
function changeIndikator(icon, message, smalltext) {
  with (document.getElementById("indicon")) {
    src = icon;
    alt = message;
    title = message;
  }

  document.getElementById("indtodo").innerHTML = message;
  document.getElementById("indtext").innerHTML = smalltext;
}

function getBodyDimension() {
  var body_obj = document.compatMode == "CSS1Compat"
               ? document.documentElement
               : document.body;

  var dimension = new Array();
  dimension['breite'] = body_obj.clientWidth;
  dimension['hoehe'] = body_obj.clientHeight;
  return dimension;
}

function createCSSHeaderTag(style, id) {
  var header = document.getElementsByTagName('head')[0];
  var css = document.createElement('link');

  if (id) css.setAttribute('id', id);

  css.rel = 'stylesheet';
  css.type = 'text/css';

  if (0 != style && '' != style) css.href = style;

  header.appendChild(css);
}

function createJSHeaderTag(filename, id) {
  var header = document.getElementsByTagName('head')[0];
  var js = document.createElement('script');

  if (id)
    js.setAttribute('id', id);

  js.setAttribute('type', 'text/javascript');
  js.setAttribute('src', '/data/data_intern/' + filename);
  header.appendChild(js);
}

function $() {
  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];

    if (typeof element == 'string') element = document.getElementById(element);
    if (arguments.length == 1) return element;

    elements.push(element);
  }
  return elements;
}

//Funktion zum Suchen von Elementen mittels Klassennamen
function getElementsWithClassName(tag, cls) {
  var arTags = document.getElementsByTagName(tag);
  var arRet = new Array();

  for (var i = 0; i < arTags.length; i++) {
    var regexp = new RegExp("(^|\\s+)" + cls + "($|\\s+)");

    if (arTags[i].className.match(regexp)) {
      arRet.push(arTags[i]);
    }
  }

  return arRet;
}

//Helpbutton Funktionen
function Help() {
  var arHelpbuttons = getElementsWithClassName('input', 'help');
  var arHelpDivs = getElementsWithClassName('div', 'help_c');

  if ((arHelpbuttons.length > 0) && (arHelpDivs.length > 0)) {
    for (var i = 0; i < arHelpbuttons.length; i++) {
      arHelpbuttons[i].id = "b_help_" + i;
      arHelpbuttons[i].onclick = show_Help;
      arHelpDivs[i].id = "help_" + i;
      document.body.onclick = hide_Help;
    }
  }
}

function show_Help(Ereignis) {

  if (!Ereignis) {
    Ereignis = window.event;
    button = Ereignis.srcElement;
    id = Ereignis.srcElement.id;
  }
  else {
    button = Ereignis.target;
    id = Ereignis.target.id;
  }

  split_id = id.substring(2, id.length);

  var winwidth = body_obj.clientWidth;
  var winheight = body_obj.clientHeight;

  if (document.getElementById(split_id)) {
    with (document.getElementById(split_id).style) {
      if (display == 'none') {
        display = 'inline';
      }
      else {
        display = 'none';
      }
    }
  }
}

function hide_Help(Ereignis) {
  if (!Ereignis) {
    Ereignis = window.event;
    id = Ereignis.srcElement.id;
  }
  else {
    id = Ereignis.target.id;
  }

  var arHelpbuttons = getElementsWithClassName('input', 'help');
  split_nr = id.substring(id.lastIndexOf("_") + 1, id.length);
  for (var a = 0; a < arHelpbuttons.length; a++) {
    if (a != split_nr) {
      if (document.getElementById("help_" + a)) {
        with (document.getElementById("help_" + a).style) {
          display = "none";
        }
      }
    }
  }
}
