/*****************************************/
/*     (c) Kufer Software Konzeption     */
/*           Loisachstrasse 4		     */
/*           D-84453 Mühldorf			 */
/*****************************************/

//Kufer-Icon
Highlight1 = new Image();
Highlight1.src = 'images/kufer.gif';

//Details bei Tool 1
DetailsGray = new Image();
DetailsGray.src = 'images/kursdetailsg.gif';
Details = new Image();
Details.src = 'images/kursdetails.gif';

//Details bei Pfeilvor
VorGray = new Image();
VorGray.src = 'images/vorg.gif';
Vor = new Image();
Vor.src = 'images/vor.gif';

//Details bei Pfeilback
BackGray = new Image();
BackGray.src = 'images/backg.gif';
Back = new Image();
Back.src = 'images/back.gif';

//TN-Liste bei Tool1
ListeGray = new Image();
ListeGray.src = 'images/tnlisteg.gif';
Liste = new Image();
Liste.src = 'images/tnliste.gif';

//Kurstage bei Tool1
KurstageGray = new Image();
KurstageGray.src = 'images/kurstageg.gif';
Kurstage = new Image();
Kurstage.src = 'images/kurstage.gif';

//Anwesenheit bei Tool1
AnwesenheitGray = new Image();
AnwesenheitGray.src = 'images/anwesenheitg.gif';
Anwesenheit= new Image();
Anwesenheit.src = 'images/anwesenheit.gif';

//Details auf- bzw. zuklappen bei der WebÜbersicht
Close = new Image();
Close.src = 'images/close.gif';
Closeh = new Image();
Closeh.src = 'images/closeh.gif';

//Raumauslastung bei Tool3
RaumauslastungGray = new Image();
RaumauslastungGray.src = 'images/raumg.gif';
Raumauslastung = new Image();
Raumauslastung.src = 'images/raum.gif';

//BelegungsuebersichtGray bei Tool5
BelegungsuebersichtGray = new Image();
BelegungsuebersichtGray.src = 'images/raumg.gif';
Belegungsuebersicht = new Image();
Belegungsuebersicht.src = 'images/raum.gif';

//Drucker
DruckerGray = new Image();
DruckerGray.src = 'images/printg.gif';
Drucker = new Image();
Drucker.src = 'images/print.gif';

//Drucker klein
DruckerSmallGray = new Image();
DruckerSmallGray.src = 'images/print_smallg.gif';
DruckerSmall = new Image();
DruckerSmall.src = 'images/print_small.gif';

//mehrere TN zu 1 Kurs buchen
BuchenGray = new Image();
BuchenGray.src = 'images/bucheng.gif';
Buchen = new Image();
Buchen.src = 'images/buchen.gif';

//Kurs entbuchen
entBuchenGray = new Image();
entBuchenGray.src = 'images/entbucheng.gif';
entBuchen = new Image();
entBuchen.src = 'images/entbuchen.gif';

//1 TN zu mehreren Kursen buchen
WarenkorbGray = new Image();
WarenkorbGray.src = 'images/warenkorbg.gif';
Warenkorb = new Image();
Warenkorb.src = 'images/warenkorb.gif';

AnmFormGray = new Image();
AnmFormGray.src = 'images/anmformg.gif';
AnmForm = new Image();
AnmForm.src = 'images/anmform.gif';

DozHonGray = new Image();
DozHonGray.src = 'images/dozhong.gif';
DozHon = new Image();
DozHon.src = 'images/dozhon.gif';

CloseWinGray = new Image();
CloseWinGray.src = 'images/closewing.gif';
CloseWin = new Image();
CloseWin.src = 'images/closewin.gif';

DozAddGray = new Image();
DozAddGray.src = 'images/dozaddg.gif';
DozAdd = new Image();
DozAdd.src = 'images/dozadd.gif';

HelpGray = new Image();
HelpGray.src = 'images/helpg.gif';
Help = new Image();
Help.src = 'images/help.gif';

DeleteGray = new Image();
DeleteGray.src = 'images/deleteg.gif';
Delete = new Image();
Delete.src = 'images/delete.gif';

EditGray = new Image();
EditGray.src = 'images/editg.gif';
Edit = new Image();
Edit.src = 'images/edit.gif';

HausGray = new Image();
HausGray.src = 'images/hausg.gif';
Haus = new Image();
Haus.src = 'images/haus.gif';

BelegungGray = new Image();
BelegungGray.src = 'images/belegungg.gif';
Belegung = new Image();
Belegung.src = 'images/belegung.gif';

CopyGray = new Image();
CopyGray.src = 'images/copyg.gif';
Copy = new Image();
Copy.src = 'images/copy.gif';

OkayGray = new Image();
OkayGray.src = 'images/okayg.gif';
Okay = new Image();
Okay.src = 'images/okay.gif';

function confirmAction (pText, pLink)
{ var result=confirm(pText);
  if (result) window.location.href=pLink;
}

function confirmSubmit (pText, pFormname)
{ var result=confirm(pText);
  return result;
}

// MK 22.06.2005: Sucht von einem Element die dazugehörige Form und submittet diese
// @currentObject: Element, ab dem gesucht werden soll
// @return: true, wenn Form submitted werden konnte, ansonsten false
function submitParentForm(currentObject)
{ if (!currentObject) return false; // Falls das Objekt nich existiert, Rekursion verlassen
  // Falls das aktuelle Objekt eine Form ist, diese submitten.
  // Musste leider mit einem String-Vergleich gemacht werden,
  // da JavaScript keine gescheiten Typen-Operatoren hat!
  if (currentObject.nodeName.toLowerCase() == 'form')
  { currentObject.submit();
    return true;
  }
  else
  { // Aktuelles Objekt war keine Form, deshalb rufen wir die Funktion nochmal auf,
    // nur diesmal mit dem übergeordneten Element
  	submitParentForm(currentObject.parentNode);
  }
}

function ToUpperText(obj)
{ obj.value = obj.value.toUpperCase();
}

function isLeap(year) {
  if ((year%400==0)||((year%4==0)&&(year%100!=0))) 
    {return true;}
  else 
    {return false;}
}

function isDateValid(pDate)
{
  var ret = true;
  var datefields = pDate.split(".");
  if (datefields.length != 3) 
  {
    ret = false;
    return(ret);
  }
  else
  {
	  if (!pDate.match(/\d\d.\d\d.\d\d\d\d/)) ret = false;
	  switch (datefields[1])
	  {
	    default:
	      ret = false;
	      break;
	    case '01':
	      if (datefields[0] > 31) ret = false;
	      break;
	    case '02':
		  if (isLeap(datefields[2])) { if (datefields[0] > 29) ret = false; }
	      else                       { if (datefields[0] > 28) ret = false; }
	      break;
	    case '03':
	      if (datefields[0] > 31) ret = false;
	      break;
	    case '04':
	      if (datefields[0] > 30) ret = false;
	      break;
	    case '05':
	      if (datefields[0] > 31) ret = false;
	      break;
	    case '06':
	      if (datefields[0] > 30) ret = false;
	      break;
	    case '07':
	      if (datefields[0] > 31) ret = false;
	      break;
	    case '08':
	      if (datefields[0] > 31) ret = false;
	      break;
	    case '09':
	      if (datefields[0] > 30) ret = false;
	      break;
	    case '10':
	      if (datefields[0] > 31) ret = false;
	      break;
	    case '11':
	      if (datefields[0] > 30) ret = false;
	      break;
	    case '12':
	      if (datefields[0] > 31) ret = false;
	      break;
	  }
	  if (!pDate.match(/\d\d.\d\d.\d\d\d\d/)) ret = false;
	  if (pDate.length != 10) ret = false;
	  return(ret);
  }
}


function FormatDate(pDate)
{
  var day = pDate.getDate();
  if (day.length < 2)
  	day = "0" + day;
  	
  var month = pDate.getMonth() + 1;
  if (month.length < 2)
  	month = "0" + month;
  
  return day + "." + month + "." + pDate.getFullYear();
}

// Setzt den Text der Elemente auf ein bestimmtes Datum.
// pType kann folgende Werte annehmen:
// 0: Heute
// 1: Morgen
// 2: Diese Woche
// 3: Nächste Woche
// 4: Diesen Monat
// 5: Nächsten Monat
function getDate(pElement1, pElement2, pType)
{
  var jetzt = new Date();

  switch(pType)
  {
  	case 0: // Heute
  	{  	  
  	  pElement1.value = FormatDate(jetzt);
  	  pElement2.value = FormatDate(jetzt);
  	  break;
  	}
  }
}

function objExists(pObj)
{
  if (pObj) return(true);
  else      return(false);
}

function CheckUserInput(pToolSectionId)
{
  var datefield1ok = true;
  var datefield2ok = true;
  var alertmessage = 'Das eingegebene Datum ist ungültig! Bitte geben Sie das Datum im Format "TT.MM.JJJJ" an!';
  
  switch (pToolSectionId)
  {
    case 1: // Kursplanung für Dozenten - Kurs bearbeiten
      if (objExists(window.document.getElementsByName('Col_beginn_dat')[0]))
      {
		datefield1ok = isDateValid(window.document.getElementsByName('Col_beginn_dat')[0].value);
        if (window.document.getElementsByName('Col_beginn_dat')[0].value == '') datefield1ok = true;
      }
      if (objExists(window.document.getElementsByName('Col_ende_dat')[0]))
      {
	    datefield2ok = isDateValid(window.document.getElementsByName('Col_ende_dat')[0].value);
		if (window.document.getElementsByName('Col_ende_dat')[0].value == '') datefield2ok = true;      
	  }	
	  if(datefield1ok && datefield2ok) document.FormEditKurs.submit();
      else alert(alertmessage);
      break;

    case 2: // Kurplanung durch HPM - Kurstage hinzufügen
      if (objExists(window.document.getElementsByName('Col_datum')[0]))
      {
        datefield1ok = isDateValid(window.document.getElementsByName('Col_datum')[0].value);
        if (window.document.getElementsByName('Col_datum')[0].value == '') datefield1ok = true;
	  }
	  if(datefield1ok) document.FormAddNewKT.submit();
      else alert(alertmessage);
      break;

    case 3: // Kursplanung für Dozenten - Kursdetails bearbeiten
      if (objExists(window.document.getElementsByName('Col_beginn_dat')[0]))
      {
        datefield1ok = isDateValid(window.document.getElementsByName('Col_beginn_dat')[0].value);
        if (window.document.getElementsByName('Col_beginn_dat')[0].value == '') datefield1ok = true;
	  }
	  if (objExists(window.document.getElementsByName('Col_ende_dat')[0]))
      {
	    datefield2ok = isDateValid(window.document.getElementsByName('Col_ende_dat')[0].value);
        if (window.document.getElementsByName('Col_ende_dat')[0].value == '') datefield2ok = true;
	  }
	  if(datefield1ok && datefield2ok) document.Tool3Kursdetails.submit();
      else alert(alertmessage);
      break;

    case 4: // TN Anmeldung - Einen oder mehrere Teilnehmer zum Kurs buchen
      if (objExists(window.document.getElementsByName('w_Geburtsdatum')[0]))
      { if ((window.document.getElementsByName('w_Geburtsdatum')[0].value == "") || (window.document.getElementsByName('w_Geburtsdatum')[0].value == "..")) datefield1ok = true;
        else datefield1ok = isDateValid(window.document.getElementsByName('w_Geburtsdatum')[0].value); }
      if(datefield1ok) document.Tool6TnToKAnm.submit();
      else alert(alertmessage);
      break;

    case 5: // Kursplanung für HPM - Kurs bearbeiten
      if (objExists(window.document.getElementsByName('Col_beginn_dat')[0]))
      {
        datefield1ok = isDateValid(window.document.getElementsByName('Col_beginn_dat')[0].value);
        if (window.document.getElementsByName('Col_beginn_dat')[0].value == '') datefield1ok = true;
	  }
	  if (objExists(window.document.getElementsByName('Col_ende_dat')[0]))
      {
	    datefield2ok = isDateValid(window.document.getElementsByName('Col_ende_dat')[0].value);
        if (window.document.getElementsByName('Col_ende_dat')[0].value == '') datefield2ok = true;
	  }
	  if(datefield1ok && datefield2ok) document.FormEditKursHPM.submit();
      else alert(alertmessage);
      break;
      
    case 6: // Kursplanung für HPM - Kursdetails bearbeiten
      if (objExists(window.document.getElementsByName('Col_beginn_dat')[0]))
      {
        datefield1ok = isDateValid(window.document.getElementsByName('Col_beginn_dat')[0].value);
        if (window.document.getElementsByName('Col_beginn_dat')[0].value == '') datefield1ok = true;
	  }
	  if (objExists(window.document.getElementsByName('Col_ende_dat')[0]))
      {
	    datefield2ok = isDateValid(window.document.getElementsByName('Col_ende_dat')[0].value);
        if (window.document.getElementsByName('Col_ende_dat')[0].value == '') datefield2ok = true;
	  }
	  if(datefield1ok && datefield2ok) document.Tool8Kursdetails.submit();
      else alert(alertmessage);
      break;

    case 7: // Kursplanung für HPM - DozHonorar bearbeiten
      if (objExists(window.document.getElementsByName('Col_gebdat')[0]))
      { if ((window.document.getElementsByName('Col_gebdat')[0].value == "") || (window.document.getElementsByName('Col_gebdat')[0].value == "..")) datefield1ok = true;
        else datefield1ok = isDateValid(window.document.getElementsByName('Col_gebdat')[0].value); }
      if (objExists(window.document.getElementsByName('Col_dozentseit')[0]))
      { if ((window.document.getElementsByName('Col_dozentseit')[0].value == "") || (window.document.getElementsByName('Col_dozentseit')[0].value == "..")) datefield2ok = true;
        else datefield2ok = isDateValid(window.document.getElementsByName('Col_dozentseit')[0].value); }
      if(datefield1ok && datefield2ok) document.Tool8DozHon.submit();
      else alert(alertmessage);
      break;
      
    case 8: // TN Anmeldung - Einen oder mehrere Teilnehmer zum Kurs buchen
      if (objExists(window.document.getElementsByName('w_Geburtsdatum')[0]))
      { if ((window.document.getElementsByName('w_Geburtsdatum')[0].value == "") || (window.document.getElementsByName('w_Geburtsdatum')[0].value == "..")) datefield1ok = true;
        else datefield1ok = isDateValid(window.document.getElementsByName('w_Geburtsdatum')[0].value); }
      if(datefield1ok) return true; //document.Tool8NewDoz.submit();
      else alert(alertmessage); return false;
  }
}

// notwendig für einige Tools, um am Anfang zwischen Liste und Grafik zu entscheiden
function decideListOrGraphic(p_url,p_target)
{
  var a = true; var b = true; var c = ""; var d = "";

  a = isDateValid(document.getElementsByName("DatVon")[0].value);
  b = isDateValid(document.getElementsByName("DatBis")[0].value);
  if (a && b)
  {
    c = document.getElementsByName("DatVon")[0].value;
    d = document.getElementsByName("DatBis")[0].value;
    ts = "";//Startzeit, nur in Tool 5 - Terminübersicht vorhanden
    te = "";
    if ( document.getElementsByName("starttime")[0] )
      ts = "&starttime=" + document.getElementsByName("starttime")[0].value;
    if ( document.getElementsByName("endtime")[0] )
      te = "&endtime=" + document.getElementsByName("endtime")[0].value;
    if (p_target == "self") window.location.href = p_url + "&DatVon=" + c + "&DatBis=" + d +ts+te;
    else if (p_target == "new") window.open (p_url + "&DatVon=" + c + "&DatBis=" + d +ts+te,"");
  }
  else alert("Ungültiges Datumsformat. Bitte geben Sie das Datum in der Form TT.MM.JJJJ ein!");
}

// notwendig für Tool 5, damit morgen etc. analog Gebäudeübersicht funktioniert
function showPeriodGraphic(p_url,p_target)
{
    ts = "";//Startzeit, nur in Tool 5 - Terminübersicht vorhanden
    te = "";
    if ( document.getElementsByName("starttime")[0] )
      ts = "&starttime=" + document.getElementsByName("starttime")[0].value;
    if ( document.getElementsByName("endtime")[0] )
      te = "&endtime=" + document.getElementsByName("endtime")[0].value;
    if (p_target == "self") window.location.href = p_url + ts+te;
    else if (p_target == "new") window.open (p_url + ts+te,"");
}

// notwendig für Tool5 (ToolRaumUebersicht), um die Grafik für die Belegungen 
// für 1 Gebäude anzuzeigen
function showGraphicForGebaeude(p_url,p_target)
{
  var a = true; var b = "";
  a = isDateValid(document.getElementsByName("DatVon")[0].value);
  if (a)
  {ts = "";//Startzeit, nur in Tool 5 - Raumübersicht vorhanden
    te = "";
    if ( document.getElementsByName("starttime")[0] )
      ts = "&starttime=" + document.getElementsByName("starttime")[0].value;
    if ( document.getElementsByName("endtime")[0] )
      te = "&endtime=" + document.getElementsByName("endtime")[0].value;
    b = document.getElementsByName("DatVon")[0].value;
    if (p_target == "self") window.location.href = p_url + "&DatVon=" + b +ts+te;
    else if (p_target == "new") window.open (p_url + "&DatVon=" + b +ts+te,"");
  }
  else alert("Ungültiges Datumsformat. Bitte geben Sie das Datum in der Form TT.MM.JJJJ ein!");
}

function ChangeImg(Bild,Bildobjekt)
{
  // Ändert das bild in Bild durch das Bild in Bildobjekt
  Bild.src = Bildobjekt.src;
}

function setRowID(pRow, pID)
{
  // Diese Funktion sorgt dafür, dass die Spalte, über der der Mauszeiger gerade ist, gehighlightet wird
  var theCells = null;
  var c = null;
  var CellCnt = 0;
  var domDetect = false;

  theCells = pRow.cells;
  CellCnt = theCells.length;

  // Abfrage, ob ein DOM-Fähiger Browser verwendet wird
  if ((typeof(window.opera) == 'undefined') && (typeof(theCells[0].getAttribute) != 'undefined')) domDetect = true;
  else domDetect = false;

  for (c = 0; c < CellCnt; c++)
  {
    if (domDetect) theCells[c].setAttribute('id',pID,0);
    else theCells[c].style.backgroundColor = pID;
  }
}

function showToolSub(x, sightid)
{
// Funktion für die Auswahl mit der Kombobox bei den zentralen Einstellungen
   document.location.href = "hleinstell.php?sightid="+sightid+"&tool="+x+"&section=-1";
}

function showRightTable(user_id, sightid)
{
// Funktion für die Auswahl mit der Kombobox bei den Rechten
   if (user_id != -1) document.location.href = "hleinstell.php?sightid="+sightid+"&tool=1&section=5&userid="+user_id;
}

function getCalendarFor(formname, elementname)
{
  var newWindow;
  var urlstring = '../calendar/calendar.php';
  newWindow = window.open(urlstring+'?formname='+formname+'&elementname='+elementname,'','height=220,width=280,toolbar=no,minimize=no,status=no,memubar=no,location=no,scrollbars=no');
}

//*AN; 14.09.07 Prüft ob Druckeingabe eine Zahl ist
function checkZahl(druckeingabe) 
{
  var chkzahl = true;
  for (i=0;i<druckeingabe.length;++i) 
  {  
    if (druckeingabe.charAt(i) < "0" || druckeingabe.charAt(i) > "9" )
    chkzahl = false
  }
  return chkzahl;
}

// *AN; 14.09.07 notwendig für einige Tools, um für die Druckausgabe die Eingabeparameter zu checken. Falls die
// notwendigen Request Parameter (aktuell, alles, anzahl) im Formular nicht eingegeben wurden, wird das Absenden 
// des Formulars verhindert. Der Aufruf erfolgt wird im Formular mit onSubmit = checkPrintInput() 
function checkPrintInput(p_seitenzahl)
{
  var druckmodus = ""; 
  var druckvon =  "";
  var druckbis =  "";

  if (!document.getElementsByName("druckseiten_modus")[0].checked &&
  	  !document.getElementsByName("druckseiten_modus")[1].checked &&
  	  !document.getElementsByName("druckseiten_modus")[2].checked) {
  	  alert("Sie haben keine Option ausgewählt.");
  	  return false;
  }
  
  if (document.getElementsByName("druckseiten_modus")[2].checked) {
      druckvon = document.getElementsByName("druck_von")[0].value;
      druckbis = document.getElementsByName("druck_bis")[0].value;
      if (druckvon =="" || druckbis =="") 
      {
        alert("Mindestens ein Eingabefeld ist leer. Bitte  eine gültige Seitenzahl zwischen 1 und " + p_seitenzahl +  
              " für die erste bzw. letzte Seite des Ausdrucks eingeben!");  
        return false;      
      }
      if (checkZahl(druckvon) == false  || checkZahl(druckbis) == false )
      {
        alert("Mindestens ein Eingabewert ist keine Zahl. Bitte  eine gültige Seitenzahl zwischen 1 und " + p_seitenzahl +  
              " für die erste bzw. letzte Seite des Ausdrucks eingeben!");
        return false;
      } 
      //Casting auf integer     
      druckvon = druckvon*1;
      druckbis = druckbis*1;
      if (druckvon < 1 || druckvon > p_seitenzahl || druckbis < 1 || druckbis > p_seitenzahl)
      {
        alert("Ihre Seitenangabe liegt außerhalb des gültigen Bereichs. Bitte  eine gültige Seitenzahl zwischen 1 und " + p_seitenzahl +  
              " für die erste bzw. letzte Seite des Ausdrucks eingeben!");
        return false;
      }
      if (druckvon > druckbis)
      {
       alert("Die unter 'von' eingegebene Seitenzahl muß kleiner oder gleich der unter 'bis' eingegebenen Zahl sein!");  
        return false;
      }
      return true;
  }
  return true;
}

function checkInRange(allowedValues, element) {
  if (allowedValues.length<1 || !element.value)
    return false;
  valueArray = allowedValues.split('-');
  for (i=0 ; i<valueArray.length ; i++) {
    if (element.value == valueArray[i]) {
      return true;
    }
  }
  element.value = '';
  return false;
}

/**
 * Öffnet ein neues Fenster, wobei an die übergebene URL noch der Wert des inputs mit der 
 * übergebenen ID drangehängt wird
*/
function openHlWindowWithParam(url, inputID, args) {
  if (inputID == '' || document.getElementById(inputID).value == '') {
  	alert('Es ist noch keine Hinterlegung eingetragen');
  	return false;
  }
  if (args.length == 0)
	window.open(url + document.getElementById(inputID).value);
  if (args.length == 1)
	window.open(url + document.getElementById(inputID).value, args[0]);
  if (args.length == 2)
	window.open(url + document.getElementById(inputID).value, args[0], args[1]);
}

function getContextMenuKursAnw(event) {
  var srcelement = null;
  if (!event) {
  	event = window.event;
  	srcelement = event.srcElement;
  }
  else {
  	srcelement = event.target;
  }
  var idtraeger = null;
  if (srcelement.parentNode.tagName == 'TR')
  	idtraeger = srcelement;
  else
  	idtraeger = srcelement.parentNode;
  	
  //Kursnummer bestimmen:
  var table = document.getElementById('anwesenheiten');
  var knr = table.title.substring(5);
  //tool_id und toolsection_id
  var adresspart = '&tool_id='+table.tool_id+'&toolsection_id='+table.toolsection_id;
  
  var ids = idtraeger.id;
  var belegungid = extractKeyFromString(idtraeger.id, 'bel');
  var kurstagid = extractKeyFromString(idtraeger.id, 'kt');
  
  if (belegungid != '')
  	adresspart += '&belegid='+belegungid;
  if (kurstagid != '')
  	adresspart += '&tagid='+kurstagid;
  	
  //berechnen des URLParameters mode Unterscheidung wohin geklickt wurde anhand Vorhandensein belegungid/kurstagid
  //0 -> Doppelklick Hauptbereich (td)
  //	 oder Rechtsklick auf Kurstag Header (th mit id kt.., ohne bel)
  //1 -> Rechtsklick TN Header (th mit id bel.., ohne kt)
  //2 -> Rechtsklick Hauptbereich (td)
    
  //beim IE6 ist button immer 0
  //Rechtsklick: (Opera ??? eigentlich: Preferences / Content / JavaScript options... / Allow script to receive right clicks -> trotzdem Dialogfenster nötig)
  if ((event.type && event.type == "contextmenu")) {
    if (kurstagid != '' && belegungid == '')
      adresspart += '&mode=0';
    else if (belegungid != '' && kurstagid == '')
      adresspart += '&mode=1';
    else if (belegungid != '' && kurstagid != '')
      adresspart += '&mode=2';
  	window.open('toolspopup.php?nr='+knr+adresspart, 'mehrereAnwesenheitenFenster', 'height=500,width=650');
  	return false;
  }
  //Linker Doppelklick
  if ((event.button == 0) && (event.type=="dblclick")) {
    adresspart += '&mode=0';
  	window.open('toolspopup.php?nr='+knr+adresspart, 'mehrereAnwesenheitenFenster', 'height=500,width=650');
    return false;
  }
  return false;
}
//Annahme ein key k steht als k oder -k im String, der Wert kommt direkt hinter k,
//falls es weiter hinten noch keys l im String gibt, werden diese mit -l abgegrenzt
//Logische Folge: der Wert darf kein "-" enthalten
function extractKeyFromString(string, key) {
  var index = string.indexOf(key);
  if (index == -1)
  	return '';
  var nextKeyIndex = string.indexOf('-', index + key.length);
  if (nextKeyIndex > -1) //es kommt danach noch ein weiterer key
    return string.substring(index + key.length, nextKeyIndex);//-index-key.length??
  else
    return string.substring(index + key.length);
}

function activate_kanw(event) {
  var srcelement = null;
  if (!event) {
  	event = window.event;
  	srcelement = event.srcElement;
  }
  else {
  	srcelement = event.target;
  }
  //ausgelöst wird ja auf der td und die ID der tr hat das Format: 'kanwzeile'.$lfdnr
  var neueLfd = srcelement.parentNode.id.substring(9);
  
  var alteLfd = document.getElementsByName('chosenIndex')[0].value;
  //editierte Werte zurücksetzen:
  // in die hidden inputs
  getValueFromInputToInput('kanwstatus'+alteLfd, 'kanwstatus');
  getValueFromInputToInput('kanwbemerkung'+alteLfd, 'kanwbemerkung');
  getValueFromInputToInput('kanwzeitvon'+alteLfd, 'kanwvon');
  getValueFromInputToInput('kanwzeitbis'+alteLfd, 'kanwbis');
  getValueFromInputToInput('kanwpause'+alteLfd, 'kanwpause');
  //in die Anzeige, also &nbsp; falls leer
  setAnzeigeFromInputToTD_kanw('kanwstatus', 'kanwzeile'+alteLfd, 0);
  setAnzeigeFromInputToTD_kanw('kanwbemerkung', 'kanwzeile'+alteLfd, 1);
  setAnzeigeFromInputToTD_kanw('kanwvon', 'kanwzeile'+alteLfd, 2);
  setAnzeigeFromInputToTD_kanw('kanwbis', 'kanwzeile'+alteLfd, 3);
  setAnzeigeFromInputToTD_kanw('kanwpause', 'kanwzeile'+alteLfd, 4); 
  //Werte der Anwesenheit übernehmen
  document.getElementsByName('kanwstatus')[0].value = document.getElementById('kanwstatus'+neueLfd).value;
  document.getElementsByName('kanwbemerkung')[0].value = document.getElementById('kanwbemerkung'+neueLfd).value;
  document.getElementsByName('kanwvon')[0].value = document.getElementById('kanwzeitvon'+neueLfd).value;
  document.getElementsByName('kanwbis')[0].value = document.getElementById('kanwzeitbis'+neueLfd).value;
  document.getElementsByName('kanwpause')[0].value = document.getElementById('kanwpause'+neueLfd).value;
  
  //aktuell ausgewählte lfdnr aktualisieren
  document.getElementsByName('chosenIndex')[0].value = neueLfd;
}

/**
 * Value des ZielInputs auf den Value des QuellInputs setzen,
 * wobei ZielInput über ID und QuellInput über Name (erstes Auftreten)
 * angesprochen werden.
 */
function getValueFromInputToInput(zielInputId, quellInputName) {
  document.getElementById(zielInputId).value = document.getElementsByName(quellInputName)[0].value;
}
/**
 * Schreibt den Value des ersten Elements mit Name quellName in den zielLfdNr - ten Kindknoten des 
 * Elements mit zielId, falls der Wert leer ist, wird &nbsp; geschrieben
 */
function setAnzeigeFromInputToTD_kanw( quellName, zielId, zielLfdNr) {
  if (document.getElementsByName(quellName)[0].value != '')
    document.getElementById(zielId).childNodes[zielLfdNr].firstChild.nodeValue = document.getElementsByName(quellName)[0].value;
  else //&nbsp; wegen des Rahmens -> javascript: &nbsp; entspricht \u00a0
    document.getElementById(zielId).childNodes[zielLfdNr].firstChild.nodeValue = '\u00a0';
}

function onSubmitKanwDetail() {
  //Daten aus den Eingabefeldern in die HiddenInputs zurückschreiben und absenden
  var alteLfd = document.getElementsByName('chosenIndex')[0].value;
  getValueFromInputToInput('kanwstatus'+alteLfd, 'kanwstatus');
  getValueFromInputToInput('kanwbemerkung'+alteLfd, 'kanwbemerkung');
  getValueFromInputToInput('kanwzeitvon'+alteLfd, 'kanwvon');
  getValueFromInputToInput('kanwzeitbis'+alteLfd, 'kanwbis');
  getValueFromInputToInput('kanwpause'+alteLfd, 'kanwpause');
  return true;
}

function toggleElemVisibilityByCheckbox(elemId, checkboxId) {
  elem = document.getElementById( elemId );
  checkbox = document.getElementById( checkboxId );
  if (!checkbox.checked) { 
  	elem.style.visibility = "hidden"; }
  else { 
    elem.style.visibility = "visible"; }
}

function getParentTD(elem) {
  if (elem.tagName.toLowerCase() == 'td')
    return elem;
  else
    return getParentTD(elem.parentNode);
}

/**
* Erhöht oder erniedrigt den Wert im Inputfeld mit ID inputID um 1.
* Falls dort keine Zahl eingetragen ist, wird eine entsprechende Meldung ausgegeben.
* @param string inputID id des Inputfelds
* @param bool increase Inhalt erhöhen oder erniedrigen
* @return void
*/
function incOrDecInputById(inputID, increase) {
  var chkzahl = true;
  var input = document.getElementById(inputID);
  var value = input.value;
  for (i=0;i<value.length;++i) {  
    if (value.charAt(i) < "0" || value.charAt(i) > "9" )
    chkzahl = false
  }
  if (chkzahl && !(input.value==0 && !increase)) {
  	if (increase) {
  		input.value++;
  	}
  	else {
  		input.value--;
  	}
  }
  else {
  	window.alert('Bitte eine positive Zahl ins Eingabefeld eintragen!');
  }
}

/**
* Setzt den Wert des Input Felds auf den Wert, der bei der neu ausgewählten Option gesetzt ist
* @param string pName Name des upzudatenden Input Felds
* @param Element pNode select, das upgedated wird
* @return void
*/
function updateErmProz(pName, pNode) {
  var inputs = document.getElementsByTagName('input');
  for (var i = 0; i < inputs.length; i++) {
    if (inputs[i].name == pName) {
      var options = pNode.getElementsByTagName('option');
      for (var j = 0; j < options.length; j++) {
        if (options[j].value == pNode.value) {
          var inhalt = options[j].text;
          var klammerAuf = inhalt.lastIndexOf('(')
          var substr = inhalt.substring(klammerAuf+1);;
          inputs[i].value = substr.substring(0, substr.indexOf(' '));
        }
      }
    }
  }
}