// libjava.js: Library für Browser
// ----------------------------------------------------


// Erzeugen eines Fensters mit Java
function javawindow(beschreibung)
{
 w = window.open ("",beschreibung,
 "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,WIDTH=300,HEIGHT=70");
 var wd = w.document;
 wd.clear();wd.open();
 wd.write("<HTML><HEAD><TITLE>LINK-Information</TITLE><BODY BGCOLOR=#FFFF00 TEXT=#000000>"+t+"</BODY></HTML>");
 wd.close();
 return true;
}

// Erzeugen eines Fensters mit Java
function javanewwindow()
{
 alert("hallo");
/*
 w = window.open ("",beschreibung,
 "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,WIDTH=300,HEIGHT=70");
  w.location.href = loc;

 */
 return true;
}


// confirm mit java
function javaconfirm(fs)
{
  return window.confirm(fs);
}

// Neustart eines Moduls
function javaload(was)
{
 window.location.href = was;
}

function javaneustart(was)
{
 javaload(was+".php?art=2");
}

function javaneustart1(was)
{
 javaload(was+".php?art=2");
}

function javaneustart2(was)
{
 javaload(was+"&art=2");
}

// Aufruf von Seite paeintrag.php beim Abschicken der Änderungen
/* function javastartpaeintrag(sid)
{
 var cbs = "";
 var cbz = "";
 var z   = "";
 for (var i = 1;i < document.fcbs.elements.length-1; i++){
  z= "";
  if (document.fcbs.elements[i].name == "idprue") continue;

  // Aufbereiten der Checkbox gewählt
  if (document.fcbs.elements[i].name == "cb")
      z = (document.fcbs.elements[i].checked == true) ? "*" : "-";
  if (document.fcbs.elements[i].name == "te")
      z = '*';
  cbs = cbs + z;

  // Aufbereiten der Checkbox Zeugnis
  z = "";
  if (document.fcbs.elements[i].name == "zeugnisvar")
      z = (document.fcbs.elements[i].checked == true) ? "*" : "-";
  if (document.fcbs.elements[i].name == "zeugnisfest")
      z = ' '; // Blank heißt: irrelevant
  cbz = cbz + z;
 }

 javaload("paeintrag.php?PHPSESSID="+sid+"&cbs="+cbs+"&cbz="+cbz);
 return true;
} */

// Aufruf von Seite paeintrag.php beim Abschicken der Änderungen
function javastartpazusatz(seitenid,p2,p3,p4)
{
 var cbs = "";          // Übergabestring für Datenbankeintrag
 var z;                 // Hilfsvariable um cbs zusammenzubauen
 var x;                 // Hilfsvariable um pruefid zusammenzubauen

 var zusatzpruef = "";
 var pruefid = "";
 var check = "";        // ist check==true ist eine zusatzprüfung ausgewählt d.h. über
                        // pazusatzprüf.php auf paeintrag.php ansonsten direkt auf paeintrag.php
 var DipBaf = "";
 var DB = "";

 var Zeugnis ="";
 var ZG ="";

  // cbs String zusammenbauen

  for (var i = 1;i < document.fcbs.elements.length-1; i++)
    {
         z= "";
         DB= "";
         ZG= "";
        if (document.fcbs.elements[i].name == "idprue") continue;

        if (document.fcbs.elements[i].name == "cb")
          {
             z = (document.fcbs.elements[i].checked == true) ? "*": "-";
          }
        if (document.fcbs.elements[i].name == "te"){ z = '*';}

          cbs = cbs + z;

        //Positionen der Angekreuzten Zuasatzsprüfungen herausfinden
        if (document.fcbs.elements[i].name == "chbox")
          {
             if (document.fcbs.elements[i].checked)
              { x="*"; check = true; }
             else
              {x="-";}
            zusatzpruef = zusatzpruef + x ;
          }
        if (document.fcbs.elements[i].name == "diplom")
        {
         DB = (document.fcbs.elements[i].checked == true) ? "*": "-";

        }
        if (document.fcbs.elements[i].name == "bafoeg")
         {
         DB = (document.fcbs.elements[i].checked == true) ? "*": "-";

         }

        if (document.fcbs.elements[i].name == "zeugnisvar")
         {
         ZG = (document.fcbs.elements[i].checked == true) ? "*": "-";
         }
        if (document.fcbs.elements[i].name == "zeugnisfest")
         {
         ZG = "*";
         }

        DipBaf = DipBaf + DB;
        Zeugnis = Zeugnis + ZG;
    }
      if (check == true)
      {
        //!Achtung
        // id: 1017 => PAZusatpruef.php
	      // die id muss fest mit der entsprechenden Seite im Typo3-Backend verknüpft sein
	      var id = 2462;
        // Umgestellt von "Übergabe über Session-Variable" auf "Übergabe über Get-Variable"
        // Hintergrund: im WS10 gab es bisher unerklärliche Probleme, dass die Speicherung als Session-Variablen
        // nicht mehr funktionierte - 22.11.2010 gez. Klett
        // javaload("index.php?id="+id+"&cbs="+cbs+"&zusatzpruef="+zusatzpruef+"&check="+check+"&DipBaf="+DipBaf+"&Zeugnis="+Zeugnis);
        javaload("index.php?id="+id+"&cbs="+cbs+"&zusatzpruef="+zusatzpruef+"&check="+check+"&DipBaf="+DipBaf+"&Zeugnis="+Zeugnis+"&p2="+p2+"&p3="+p3+"&p4="+p4);
      }
      else
      {
      javaload("index.php?id="+seitenid+"&cbs="+cbs+"&action="+1+"&check="+check+"&DipBaf="+DipBaf+"&Zeugnis="+Zeugnis);
      }

 return true;
}

// Aufruf von Zusatzprüfungen libstud
function javazusatzpruef(seitenid)
{
 var x,y;
 var zusatzpruef = "";
 var pruefid = "";
 for (var i = 1;i < document.fcbs.elements.length-1; i++)
 {
  y = i-1; // x enthält den Inhalt von Feld idprue
  if (document.fcbs.elements[i].name == "idprue") continue;
  if (document.fcbs.elements[i].name == "cb")
      {
          if(document.fcbs.elements[i].checked == true)
            {
               x = document.fcbs.elements[y].value;
               pruefid = pruefid + x + ":"; // Trennzeichen hinzufügen
            }
      }
 }

  javaload("index.php?id="+seitenid+"&action="+2+"&pruefid="+pruefid+"&check="+false);
  return true;
}

// Start Prüfungsdatenspeicherung mit Übergabe Daten
function javastartpaanzeige(name)
{
  art='-';
  if (document.fneuanzeige.mit.checked == true)
    art= '*';
  javaload(name + "&mit=" +art);
  return true;
}

// Start der Seite zeitdat mit Datenübergabe
function javatermine(name,sid)
{
 ls =document.finput.zfd.value  +'|'+ document.finput.zfz.value  +'|'+
     document.finput.zad.value  +'|'+ document.finput.zaz.value  +'|'+
     document.finput.zld.value  +'|'+ document.finput.zlz.value  +'|'+
     document.finput.zapd.value +'|'+ document.finput.zapz.value +'|'+
     document.finput.zbpd.value +'|'+ document.finput.zbpz.value +'|'+
     document.finput.zepd.value +'|'+ document.finput.zepz.value +'|'+
     document.finput.zand.value +'|'+ document.finput.zanz.value +'|'+
     document.finput.znd.value  +'|'+ document.finput.znz.value  +'|'+
     document.finput.zmd.value  +'|'+ document.finput.zmz.value ;
 javaload("zeitdat.php?PHPSESSID="+sid+"&art=2&da=" +ls);
 return true;
}

// Start Program prof/mitarbei mit Übergabe der Daten
function javamitarbei(sid)
{

 ls = "&seldoze="      + document.finput.seldoze.value  +
      "&selabte="      + document.finput.selabte.value +
      "&seltaet="      + document.finput.seltaet.value  +
      "&selpens="      + (document.finput.selpens.checked ? "*": "-" ) +
//      "&selmita="      + document.finput.selmita.value  +
      "&selgesc="      + document.finput.selgesc.value  +
      "&selsort="      + document.finput.selsort.value  +
      "&selsort2="     + document.finput.selsort2.value +
      "&seldars="      + document.finput.seldars.value  +
      "&selsicht="     + document.finput.selsicht.value  +
      "&selsuch="      + document.finput.selsuch.value  +
      "&selsutx="      + document.finput.selsutx.value;
//alert(ls);
 javaload(location.pathname+"?PHPSESSID="+sid+"&art=2"+ls);
 return true;
}
// Start Program prof/mitarbei mit Übergabe der Daten
function javapersonensuche(sid)
{

 ls = "&selsort="      + document.finput.selsort.value  +
      "&selsort2="     + document.finput.selsort2.value +
      "&selsuch="      + document.finput.selsuch.value  +
      "&selsutx="      + document.finput.selsutx.value;
 javaload(location.pathname+"?PHPSESSID="+sid+"&art=2"+ls);
 return true;
}




// setzt den Focus nach einer Fehlermeldung
function javafocussetzen(i)
{
// window.document.finput.elements[name].focus();   // focus

 name = document.finput.elements[i].name;

 window.setTimeout('document.finput.'+name+'.focus()',5);
 window.document.finput.elements[i].select();  // markieren
}

// prüft die HZB-Note auf Korrektheit
/*function javahzbnotepruefen(note, erlaubtenoten)
{
  for (var j=0; j < erlaubtenoten.length; j+= 2)
  {
    if (wert.charAt(0) == erlaubtenoten.charAt(j) && wert.charAt(1) == erlaubtenoten.charAt(j+1))
    { gef=true; break; }
  }
  if (!gef)
  {
    alert('Notenwert '+wert+' ist falsch');
    javafocussetzen(i);
    return false;
  }
  document.finput.elements[i].value=wert;
  return true;
}*/

// liest die Noten aus dem Formular "fnoten" der Notenerfassung aus
function javanotenerfpruefen(name, erlaubtenoten)
{
 //  alert(erlaubtenoten);
 var name;

 for (var i = 0;i < document.finput.elements.length-1; i++)
    if (document.finput.elements[i].name == name)
        { wert = document.finput.elements[i].value.toUpperCase();

          if (wert=='' || wert=='--') return true; // leer zulassen
          gef=false;
          for (var j=0; j < erlaubtenoten.length; j+= 2)
            {
              if (wert.charAt(0) == erlaubtenoten.charAt(j) && wert.charAt(1) == erlaubtenoten.charAt(j+1))
                 { gef=true; break; }
            }
          if (!gef)
             {
               alert('Notenwert '+wert+' bei Nr '+(i+1)+' ist falsch');
               javafocussetzen(i);
               return false;
             }
          document.finput.elements[i].value=wert;
          return true;
        }
}


// liest die Noten aus dem Formular "finput" der Notenerfassung aus
function javanotenerf(seitenid,idprue)
{

 // erstes Element des Formulars ist das Formular selbst, das letzte ist der Speichernknopf ???????
 // 10.11.03: Zähler wieder auf '0' gesetzt, da bei Zählerbeginn bei '1' das erste Eingabefeld übergangen wurde
 s='';
 for (var i = 0;i < document.finput.elements.length-1; i++)
   {
     w = document.finput.elements[i].value.toUpperCase();
     if (w =='') w='--';
     s += w;
   }
 var para = 'index.php?id='+seitenid+'&n=3'+idprue+s;

 javaload(para);  // 3 ist die Betriebsart, idprue ist die Prüfung


 return true;
}

// liest ein Datum aus dem feld name und prüft, ob es korrekt ist
// abjahr, bisjahr ist relativ zum heutigen Jahr

function javaDazLetztertag(m,j)
// bestimmt den letzten Tag eines Monats
{
   switch (m) {
   case '4': case '6': case '9': case '11' : return 30;
   case '2':if ( ( j % 4 == 0 && j % 100 != 0) || (j % 400 == 0 ))
                 return 29;
            else return 28;
   default: return 31;
   }
}

function javaDazPruefe(tag,monat,jahr,abjahr,bisjahr)
// Rückgabe 0 wenn Datum korrekt, sonst <> 0
{
   if ( isNaN(jahr) || isNaN(monat) || isNaN(tag)) return 4;
   if (jahr < abjahr || jahr > bisjahr) return 1;
   if (monat<1 || monat>12)             return 2;
   if (tag  <1 || tag > javaDazLetztertag(monat,jahr)) return 3;
   return 0;
}


function javapruefedatum(name,abjahr,bisjahr)
{
 fehler=0;
 for (var i = 0;i < document.finput.elements.length-1; i++)
    if (document.finput.elements[i].name == name)
        { wert = document.finput.elements[i].value.toUpperCase();
          if (wert == '' || wert == '--') return true; // leer zulassen
          if (wert.indexOf('.') != -1) werte = wert.split('.');
          else
          if (wert.indexOf('-') != -1)
             { werte = wert.split('-'); h=werte[0]; werte[0]=werte[2]; werte[2]=h; }
          else
          if (wert.indexOf(' ') != -1) werte = wert.split(' '); else
             {
               if (wert.length==4) { wert=wert.substr(0,2)+'.'+wert.substr(2,2); } else
               if (wert.length>=6) { wert=wert.substr(0,2)+'.'+wert.substr(2,2)+'.'+wert.substr(4,4); }
               werte = wert.split(".");
             }

//alert(werte[0]+" "+werte[1]+" "+werte[2]);
          // prüfen ob das Datum korrekt ist
          jetzt  = new Date();
//          jahr   = jetzt.getYear();              // nach Problemen mit Firefox, Funktion geändert 30.06.06 gez. Klett
          jahr   = jetzt.getFullYear();
          abjahr+= jahr; bisjahr += jahr;
          if (abjahr < 50) abjahr += 2000;         // Netscape gibt bei getYear() zweistelligen Wert zurück
          else if (abjahr < 200) abjahr += 1900;
          if (bisjahr < 50) bisjahr += 2000;
          else if (bisjahr < 200) bisjahr += 1900;
          monat  = jetzt.getMonth()+1;
          tag    = jetzt.getDay();
          fehler = 0;
          if (werte.length > 3) { fehler=4; break; }
          if (werte.length > 2 && werte[2]!='') jahr = werte[2];
          if (werte.length > 1 && werte[1]!='') monat= werte[1];
          if (werte.length > 0 && werte[0]!='') tag  = werte[0];
          if (jahr.length==2) { if (jahr > 50) jahr ='19'+jahr; else jahr = '20'+jahr; }
          fehler= javaDazPruefe(tag, monat,jahr,abjahr,bisjahr);
          if (fehler != 0) break;
          if (tag.length==1) tag='0'+tag;
          if (monat.length==1) monat='0'+monat;
          document.finput.elements[i].value = jahr+ '-' + monat + '-' + tag;
          break;
        }
   if (fehler==0) return true;

   t= '(Datumsformate t.m.j  j-m-t ttmmjj)';
   switch (fehler){
   case 1 : alert('Jahr falsch('+abjahr+'-'+bisjahr+') '+t); break;
   case 2 : alert('Monat falsch(1-12)'+t); break;
   case 3 : alert('Tag falsch(1..28,29) '+t); break;
   case 4 : alert('Datum falsch '+t); break;
   }
   javafocussetzen(i);
   return false;
}  //javapruefedatum





function javapruefedatumdeutsch(name,abjahr,bisjahr)
{
 fehler=0;
 for (var i = 0;i < document.finput.elements.length-1; i++)
    if (document.finput.elements[i].name == name)
        { wert = document.finput.elements[i].value.toUpperCase();
          if (wert == '' || wert == '--') return true; // leer zulassen
          if (wert.indexOf('.') != -1) werte = wert.split('.');
          else
          if (wert.indexOf('-') != -1)
             { werte = wert.split('-'); h=werte[0]; werte[0]=werte[2]; werte[2]=h; }
          else
          if (wert.indexOf(' ') != -1) werte = wert.split(' '); else
             {
               if (wert.length==4) { wert=wert.substr(0,2)+'.'+wert.substr(2,2); } else
               if (wert.length>=6) { wert=wert.substr(0,2)+'.'+wert.substr(2,2)+'.'+wert.substr(4,4); }
               werte = wert.split(".");
             }

//alert(werte[0]+" "+werte[1]+" "+werte[2]);
          // prüfen ob das Datum korrekt ist
          jetzt  = new Date();
//          jahr   = jetzt.getYear();              // nach Problemen mit Firefox, Funktion geändert 30.06.06 gez. Klett
          jahr   = jetzt.getFullYear();
          abjahr+= jahr; bisjahr += jahr;
          if (abjahr < 50) abjahr += 2000;            // Netscape gibt bei getYear() zweistelligen Wert zurück
          else if (abjahr < 200) abjahr += 1900;
          if (bisjahr < 50) bisjahr += 2000;
          else if (bisjahr < 200) bisjahr += 1900;
          monat  = jetzt.getMonth()+1;
          tag    = jetzt.getDay();
          fehler = 0;
          if (werte.length > 3) { fehler=4; break; }
          if (werte.length > 2 && werte[2]!='') jahr = werte[2];
          if (werte.length > 1 && werte[1]!='') monat= werte[1];
          if (werte.length > 0 && werte[0]!='') tag  = werte[0];
          if (jahr.length==2) { if (jahr > 50) jahr ='19'+jahr; else jahr = '20'+jahr; }
          fehler= javaDazPruefe(tag, monat,jahr,abjahr,bisjahr);
          if (fehler != 0) break;
          if (tag.length==1) tag='0'+tag;
          if (monat.length==1) monat='0'+monat;
          document.finput.elements[i].value = tag+ '.' + monat + '.' + jahr;
          break;
        }
   if (fehler==0) return true;

   t= '(Datumsformate t.m.j  j-m-t ttmmjj)';
   switch (fehler){
   case 1 : alert('Jahr falsch('+abjahr+'-'+bisjahr+') '+t); break;
   case 2 : alert('Monat falsch(1-12)'+t); break;
   case 3 : alert('Tag falsch(1..28,29) '+t); break;
   case 4 : alert('Datum falsch '+t); break;
   }
   javafocussetzen(i);
   return false;
}  //javapruefedatumdetuscht




function javafehlermeldung( meldung,i )
{
   alert(meldung);
//   javafocussetzen(i);
   return false;
}  //javafehlermeldung

function javaisint( wort )
//gibt true zurück, wenn wert in Z, sonst false
{
   for( var i  = 0; i<wort.length; i++ )
   {
      switch( wort[i] )
      {
         case "0":
         case "1":
         case "2":
         case "3":
         case "4":
         case "5":
         case "6":
         case "7":
         case "8":
         case "9":
         break;
         default: return false;
         break;
      }

   }//for
   return true;
}//javainsint


function javapruefezeit(name)
{
   var meldung="Uhrzeitformat: hh:mm, h:mm, h:m oder h:mm";
   var i ;
   for ( i = 0;i < document.finput.elements.length-1; i++)
   if (document.finput.elements[i].name == name)
   {
      wert = document.finput.elements[i].value;
      break;
   }//for

   dppos=wert.indexOf(':');
   if (dppos == -1) return javafehlermeldung( meldung,i );
   if ( dppos != wert.lastIndexOf(':'))return javafehlermeldung( meldung,i );
   werte = wert.split(':');

   if ( (werte[0].length > 2)||(werte[1].length > 2) ) return javafehlermeldung( meldung,i );

   meldung="Nur ganzzahleige werte fur Stunde und Minute sind zulässig";
   if( !(javaisint(werte[0])&&javaisint(werte[1]))  )return javafehlermeldung( meldung,i );

   meldung="die Stunde muß zw. 0 und 24 liegen !\nund die Minute zw. 0 und 59";
   if(   ( werte[0] <0 )
      || ( werte[0] >24)
      || ( werte[1] <0 )
      || ( werte[1] >59)
      ) return javafehlermeldung( meldung,i );

   var en0=""; var en1=""; var en = false;
   if (werte[0].length < 2) { en0="0"; en=true};
   if (werte[1].length < 2) { en1="0"; en=true};

   document.finput.elements[i].value = en0+werte[0]+":"+en1+ werte[1];

 return true;
}//javapruefezeit


function javadeutschdatum(name)
//erwarte Datum in der Form yyyy-mm-dd und ändert es in dd.mm.yyyy
{
   for (var i = 0;i < document.finput.elements.length-1; i++)
      if (document.finput.elements[i].name == name)
      {
         wert = document.finput.elements[i].value;
         werte = wert.split("-");
         wert=werte[2]+"."+werte[1]+"."+werte[0];
         document.finput.elements[i].value=wert;
      }//if
}//javadeutschdatum


// erzeugt ein Fenster für Informationsdienst
function javapopup(datei,w,h)
{
//  open(datei+".htm","Info","width="+w+",height="+h+",screenX=0,screenY=0,dependent=yes,resizable=yes,scrollbars=yes");
  var para;
  para='width='+w+',height='+h+',screenX=0,screenY=0,resizable=yes,scrollbars=yes';
  open(datei+".html","Info",para);
}//javapopup


function jsStelAbteAlle()
{
  // Wenn bei Ende des Studiums "Ausschluss" gewählt => wird automatisch Checkbox "Liegt ein Ausschluss..." angekreuzt
  // und andersherum
  if (document.finput.alle.checked == true)
  {
    document.finput.ac.checked = true;
    document.finput.esb.checked = true;
    document.finput.inf.checked = true;
    document.finput.pm.checked = true;
    document.finput.sib.checked = true;
    document.finput.tec.checked = true;
    document.finput.td.checked = true;
  }
}

function jsStelAbte(object)
{
  // Wenn bei Ende des Studiums "Ausschluss" gewählt => wird automatisch Checkbox "Liegt ein Ausschluss..." angekreuzt
  // und andersherum
//  if (document.finput.alle.checked == true)
//    document.finput.ac.checked = false;
if (object.checked == false)
  document.finput.alle.checked = false;
}



function jsTastendruck(e, feld)
{
	var taste = GetKeyCode(e);
    //Wenn Ctrl-Taste gedrueckt, dann Focus setzen - damit wird Ctrl-Copy verhindert
	//alert(taste);
	if (taste == 17)
	{
       alert('Der Inhalt kann nicht kopiert werden!');
       return;
	}

	//TAB- und ESC-Taste ignorieren
	//if ( (taste == 9) || (taste == 27))

	//Alle Sondertasten ignorieren
	if ( taste < 47)
		return;

	if (feld && (feld.length > 7))
	{

		alert ('Passwort ist auf 8 Zeichen beschränkt!');

	}

}

function GetKeyCode(e)
{
	if(e && e.which) return e.which;
	if(e.keyCode) return e.keyCode;
	if(window.event) return window.event.keyCode || null;
}



//----------------------------------------------------------------

// UTF8-Konvertierungsfunktionen
//----------------------------------------------------------------

function encode_utf8(text)
	{
	// dient der Normalisierung des Zeilenumbruchs
	text = text.replace(/\r\n/g,"\n");
	var utftext = "";
	for(var n=0; n<text.length; n++)
		{
		// ermitteln des Unicodes des  aktuellen Zeichens
		var c=text.charCodeAt(n);
		// alle Zeichen von 0-127 => 1byte
		if (c<128)
			utftext += String.fromCharCode(c);
		// alle Zeichen von 127 bis 2047 => 2byte
		else if((c>127) && (c<2048)) {
			utftext += String.fromCharCode((c>>6)|192);
			utftext += String.fromCharCode((c&63)|128);}
		// alle Zeichen von 2048 bis 66536 => 3byte
		else {
			utftext += String.fromCharCode((c>>12)|224);
			utftext += String.fromCharCode(((c>>6)&63)|128);
			utftext += String.fromCharCode((c&63)|128);}
		}
	return utftext;
	}

function decode_utf8(utftext)
	{
	var plaintext = ""; var i=0; var c=c1=c2=0;
	// while-Schleife, weil einige Zeichen uebersprungen werden
	while(i<utftext.length)
		{
		c = utftext.charCodeAt(i);
		if (c<128) {
			plaintext += String.fromCharCode(c); i++;}
		else if((c>191) && (c<224)) {
			c2 = utftext.charCodeAt(i+1);
			plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
			i+=2;}
		else {
			c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
			plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
			i+=3;}
		}
	return plaintext;
	}
