function DateAdd()
{
  var returnDate = new Date();
  var i          = 0;
  var ret        = false;
  var numDays    = 0;

  for ( i = 0; i < 5; i++ ) {
    ret = document.form.zeitraum.options[i].selected;
    if ( ret ) {
      numDays = document.form.zeitraum.options[i].value;
    }
  }

  if ( isNaN( numDays ) ) {
    document.form.dat.value = "";
  }
  else {
    returnDate.setTime(returnDate.getTime()+60000*60*24*numDays);
    var year = returnDate.getYear();
    if ( ( year - 100 ) < 100 ) {
      year = year + 1900;
    }
    var month = returnDate.getMonth() + 1;
    var day = returnDate.getDate();
    document.form.dat.value = year+"-"+month+"-"+day;
  }
}

function checkProspektTitle() {
    var titel   = document.form.titel.value;
    if ( titel == "" ) {
      alert( "Das Feld Titel muß angegeben werden !");
      return false;
    }
    return true;
}

function checkTemplate() {
    var name   = document.form.name.value;
    var cont   = document.form.content.value;
    if ( name == "" ) {
      alert( "Das Feld Name muß angegeben werden !");
      return false;
    }
    if ( cont == "" ) {
      alert( "Das Feld Aufbau muß angegeben werden !");
      return false;
    }
    return true;
}

function checkPublikation() {
    var titel   = document.form.titel.value;
    if ( titel == "" ) {
      alert( "Das Feld Titel muß angegeben werden !");
      return false;
    }
    var preis   = document.form.preis.value;
    if ( preis == "" ) {
      alert( "Das Feld Preis muß angegeben werden !");
      return false;
    }

    if ( !checkMoney("preis") ) {
      return false;
    }

    return true;
}

function checkSearchVeranst() {
  var bdat = document.form.sbdat.value;
  var edat = document.form.sedat.value;
  if ( bdat != "" ) {
    if ( !checkDate("sbdat") ) {
      return false;
    }
  }
  if ( edat != "" ) {
    if ( !checkDate("sedat") ) {
      return false;
    }
  }
  return true;
}

function checkVeranst() {
  var typ   = document.form.typ.value;
  var bdat = document.form.bdat.value;
  var edat = document.form.edat.value;
  var titel  = document.form.titel.value;
  var ort   = document.form.ort.value;
  var bzeit   = document.form.bzeit.value;
  var ezeit   = document.form.ezeit.value;
  if ( typ == "" || bdat == "" || titel == "" || ort == "" ) {
    alert( "Die Felder :\nTyp, Beginn, Veranstaltung und Ort \nmüssen angegeben werden !");
    return false;
  }
  if ( bdat != "" ) {
    if ( !checkDate("bdat") ) {
      return false;
    }
  }
  if ( edat != "" ) {
    if ( !checkDate("edat") ) {
      return false;
    }
  }
  if ( bzeit != "" ) {
    if ( !checkTime(bzeit) ) {
      alert( "Das Zeitformat des Feldes 'Zeit von' ist ungültig !" );
      return false;
    }
  }
  if ( ezeit != "" ) {
    if ( !checkTime(ezeit) ) {
      alert( "Das Zeitformat des Feldes 'Zeit bis' ist ungültig !" );
      return false;
    }
  }
  return true;
}

function checkThema() {
    var thema = document.form.thema.value;
    var datum = document.form.datum.value;
    if ( thema == "" ) {
      alert( "Das Feld Thema muß angegeben werden !");
      return false;
    }
    if ( datum != "" ) {
      if ( !checkDate("datum") ) {
        return false;
      }
    }
    return true;
}

function checkThemaSearch() {
    var thema = document.form.sthema.value;
    var datum = document.form.sdat.value;
    if ( thema == "" ) {
      alert( "Das Feld Thema muß angegeben werden !");
      return false;
    }
    if ( datum != "" ) {
      if ( !checkDate("sdat") ) {
        return false;
      }
    }
    return true;
}

function markRights( wie ) {
  var anz = 0;
  var i = 0;
  var wert = "";
  anz      = document.form1.cnt.value;
  for ( i = 1; i <= anz; i++ ) {
    wert = "c" + i;
    eval("document.form1." + wert + ".checked = " + wie );
  }
}

function markCheckboxes( wie, name ) {
  var anz = 0;
  var i = 0;
  var wert = "";
  anz      = eval("document."+name+".cnt.value");
  for ( i = 1; i <= anz; i++ ) {
    wert = "c" + i;
    eval("document."+name+"." + wert + ".checked = " + wie );
  }
}

// Layer Funktionen
function show(x) // Universalfunktion zum Anzeigen von Layern (NN und IE)
{
  if(document.layers)
  {
    document.layers[x].visibility="show";
  }
  else
  {
    document.all[x].style.visibility="visible";
  }
}
function hide(x)  // Universalfunktion zum Verbergen von Layern (NN und IE)
{
  if(document.layers)
  {
    document.layers[x].visibility="hide";
  }
  else
  {
    document.all[x].style.visibility="hidden";
  }
}
// Cookie Funktionen
function SetCookie (name,value,expires,path,domain,secure) {
  parent.header.document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

function GetCookie (name, part) {
   /* example GetCookie("causwahl", 2) ->return VAKANR
   ** name - name of cookie like causwahl
   ** part - entrynumber (1 - n)
   ** the part in the unescaped value of the cookie -> apen_util.w get...
   */
 
   var mycookie = document.cookie;
   var begin = mycookie.indexOf(name);
   if ( begin == -1 ) 	
	return ""; 
   var thiscookie=mycookie.substring(
                        begin + name.length + 1, mycookie.length );

   /* only this value of the name */
   thiscookie = thiscookie.substring(0, thiscookie.indexOf(";") );
   thiscookie = unescape(thiscookie);

   /* f.ex. in causwahl we have 10 values like VNIPNR;VAKANR;VDVOR...
   */
   var array=thiscookie.split(";");
   /* for ( var i=0; i< array.length; i++ ) {	alert (array[i]); } 
   */
   return( array[part-1]);
}


function fill_cookie () {
 if (document.forms[0].VHNIPNR.value != "")
 {
   wert = document.forms[0].VHNIPNR.value + ";" + document.forms[0].VHAKANR.value
         + ";" + document.forms[0].VHDVOR.value + ";1" ;
   SetCookie ("causwahl", wert);
 }
 return true;
}
//------------- checking the form
// function for forms
function getField(field)
{
  return eval("document.form." + field + ".value");
}
function setRadio(radio,nth)
{
  eval("document.form." + radio + "[" + nth + "].checked=true");
}
function getRadio(radio,nth)
{
  return eval("document.form." + radio + "[" + nth + "].checked");
}
function resetField(field,alertText)
{
  alert(alertText);
  eval("document.form." + field + ".focus()");
}
function setField(field,val)
{
  eval("document.form." + field).value = val;
}
function setFocus(field)
{
  eval("document.form." + field + ".focus()");
}

function openWindow( url, titel, w, h )
{
    var newWin = null;
    var style     = "";
    style     = "toolbar=no";
    style    += ",location=no";
    style    += ",directories=no";
    style    += ",status=yes";
    style    += ",scrollbars=yes";
    style    += ",resizable=yes";
    style    += ",copyhistory=no";
    style    += ",width="+w + ",height="+h;
        newWin  = window.open( url, titel, style );
    return true;
}


function checkNotEmpty(field)
{
  var result = false;
  var value = getField(field);
  if (value != "")
  {
    result = true;
  }
  if (!result)
  {
    resetField(field,"Bitte geben Sie einen Wert ein.");
  }
  return result;
}

// Formatiert eine Eingabe als Datumsfeld tt.mm.jjjj
function formatDate(field)
{
   var value = getField(field);
   if (checkForValidDate(value))
      setField(field,checkForCurrentDate(value));
   else
      resetField(field,"Bitte geben Sie ein gültiges Datum ein.");
}

function checkDate(field) {
  /* prüft Feld auf ein gültiges Datum */
  var a = getField(field);
  var delimiter = "";
  var err=0;
  var day="";
  var mon="";
  var year="";

  if (a.length < 6) err=1;

  if ( err == 0 ) {
    for (var ii=0; ii< a.length; ii++ ) {
       if ( isNaN(a.charAt(ii)) )  delimiter = a.charAt(ii);
    }
    if (delimiter == "" ) {
       // no Delimiter
       day = a.substring(0, 2);
       mon = a.substring(2, 4);
       year = a.substring(4,a.length);
    } else {
       var array = a.split(delimiter);
       if (array.length != 3 ) err = 1;
       day=array[0];
       mon=array[1];
       year=array[2];
    }
  }
  //alert("Delimiter " + delimiter + " " + day + " " + mon + " " + year )
  //basic error checking
  if ( err == 0 ) {
    if (day.substring(0,1) == 0 ) day = day.substring(1,2);
    if (mon.substring(0,1) == 0 ) mon = mon.substring(1,2);
    if (day<1 || day>31) err = 2;
    if (mon<1 || mon>12) err = 2;
    if (year.length  == 2 ) {
       if (year<0 || year>99) err = 2;
       if ( year > 70 ) year = "19" + year;
              else year = "20" + year;
    }
    if (year.length  != 4 ) err = 1;
    if ( isNaN(day) || isNaN(mon) || isNaN(year) ) err=1;
  }

  if ( err == 0 ) {
    // months with 30 days
    if ( (mon==4 || mon==6 || mon==9 || mon==11 ) && day==31) err=2;

    // february, leap year
    if (mon==2){  
     if (day>29) err=2;
     if (day==29 ) {
        if ( year%4 != 0) err = 2;
        if ( year%100 == 0 && year%400!=0 ) err=2;
     }
    }
  }
  if (err!=0){
     if (err==1)  alert(field + '\nDas Format ist nicht korrekt.');
     else         alert('Dieses Datum gibt es nicht.');
     //setFocus(field);
     return false;
  }
  if ( day < 10 ) day = "0" + day;
  if ( mon < 10 ) mon = "0" + mon;
  setField(field, day +  "." + mon + "." + year) ;
  return true;
}

function checkDateOrEmpty(field) {
  /* prüft Feld auf ein gültiges Datum
  ** Wenn Feld leer ist, ist das ein gültiges Datum ! jp23102001
  */
  var result = false;
  var value = getField(field);
  if (value == "")
  {
    return  confirm("Es wurde kein Datum eingegeben.\nSoll trotzdem fortgefahren werden?");
  }
  //if (value != "") by jens 26072001
  if ((value.length > 0) && (value.length >= 8)) {
      result = true;
      var day   = parseInt(value.substring(0,2));
      var month = parseInt(value.substring(3,5));
      var year  = parseInt(value.substring(6));
      if (    isNaN(day) 
	   || isNaN(month) 
           || isNaN(year) 
           || (day < 0 || day > 31)
           || (month < 0 || month > 12)
           || year < 0 ) {
         result = false;
      }
      if (!result) {
        alert(ld,"Bitte geben Sie ein gueltiges Datum ein.");
      }
  }
  return result;
}

function getmyDate(sdate) {
  /*  konvertiert ein datumsString in ein Date */
  var year = men = day = 0;
  day = sdate.substr(0,2);
  mon = sdate.substr(3,2);
  year = sdate.substr(6,4);
  return new Date(year, mon - 1, day);
}

function checkTime( timestr )
{
  result = false;

  // checked auf Format h:mm oder hh:mm
  if ( timestr.length == 4 || timestr.length == 5 ) {
    var i = timestr.indexOf(":");
    if ( i == 1 || ( i == 2 && timestr.length == 5)) {
      var std = timestr.substring(0, i);
      var min = timestr.substring(i+1, timestr.length);
      if ( !isNaN(std) && !isNaN(min) ) {
        if ( std >= 0 && std <=23 && min >= 0 && min < 60 ) {
          result = true;
        }
      }
    }
  }
  return result;
}

// prueft auf Zeit grösser oder gleich dem vorgegebenen Datum
// minTime in hh:mm[:ss]
// field - Formfeld mit Zeitinfo
// Sekunden werde nicht ausgewertet
// silent /true/false
function checkMinTime(minTime,field,silent) {
  var result=false;
  if(checkTime(field,false)){
    var value  = getField(field);
    var h = value.substring(0,2);
    var m = value.substring(3,5);
    var hmin = minTime.substring(0,2);
    var mmin = minTime.substring(3,5);
    
    //alert(h + ">" + hmin + "\n" + m +">"+ mmin);
  
    if ((h>hmin) || ((h==hmin) && (m>mmin)))  result=true;
    if((!result) && (!silent)){
      resetField(field,"Die Zeit muss größer sein als " + minTime);
    }
  }
  return result;
}
// wurde wie regexp implementiert
function normDate(str)
{
  var state = "Sz1";
  var teil = "Td";
  var day = "";
  var month = "";
  var year = "";
  var i;
  var c;
  var result = null;
  var ctype;
  for (i = 0; i < str.length; i++)
  {
    c = str.charAt(i);
    if ( !isNaN(c))
      ctype = "Cz";
    else if (c == ".")
      ctype = "Cp";
    else
      return "Fehler: Falsches Zeichen (Ziffern oder Punkt)";
	
    if (state == "Sz1")
    {
      if (ctype == "Cz" )
      {
	 if (teil == "Td")
	   day = c;
	 else if (teil == "Tm")
	   month = c;
	 else if ( teil == "Ty")
	   year = c;
	 state = "Sz2";
      }
      else if (ctype == "Cp")
      {
	 if (teil == "Td")
	 {
	   day = "00";
	   teil = "Tm";
	 }
	 else if (teil == "Tm")
	 {
	   month = "00";
	   teil = "Ty";
	 }
	 else
	   return "Fehler: Nach Jahr kein Punkt mehr - state = " + state;
	// state = "Sz1";
     }
   }
   else if (state == "Sz2")
   {
     if (ctype == "Cz")
     {
       if (teil == "Td")
       {
	 day += c;
	 state = "Sp";
       }
       else if (teil == "Tm")
       {
	 month += c;
	 state = "Sp";
       }
       else if (teil=="Ty") 
       {
         year += c;
         state = "Sz3";
       }
       else  
       {
         year += c;
         state = "Sz3";
       }
     }
     else  if (ctype == "Cp")
     {
       if (teil == "Td")
       {
     	 day = "0" + day ;
     	 teil = "Tm";
       }
       else if (teil == "Tm")
       {
     	 month = "0" + month;
     	 teil = "Ty";
       }
       else
     	 return "Fehler: Nach Jahr kein Punkt mehr - state = " + state;
       state = "Sz1";
     }
   }
   else if (state == "Sp")
   {
     if (ctype == "Cp")
     {
       if (teil == "Td")
         teil = "Tm";
       else if (teil == "Tm")
         teil = "Ty";
       else
	 return "Fehler: Nach Jahr kein Punkt mehr - state = " + state;
       state = "Sz1";
     }
     else if (ctype=="Cz")
     {
       if (teil=="Td")
       {
         month=c;
         teil="Tm";
         state="Sz2";
       }
       else if (teil=="Tm")
       {
         year=c;
         teil="Ty";
         state="Sz2";
       }
     }
     else
       return "Fehler: erwarte Punkt und keine Ziffer";
   }
   else if (state == "Sz3")
   {
     if (ctype == "Cz")
     {
       year += c;
       state = "Sz4";
     }
     else 
       return "Fehler: erwarte Ziffer - state = " + state;
   }
   else if (state == "Sz4")
   {
     if (ctype == "Cz")
     {
       year += c;
       state = "Send";
     }
     else 
       return "Fehler: erwarte Ziffer - state = " + state;
   }
   else
     return "Fehler: unbekannter Zustand";
  }
  if (teil != "Ty" || state == "Sp")
  {
    if (day.length == 1)
       day = "0" + day;
    else if (day.length == 0)
      day = "00";
    if (month.length == 1)
      month = "0" + month;
    else if (month.length == 0)
      month = "00";
    year = "0000";
    state = "Send";
  }
  if (state == "Sz1")
    year = "0000";
  else if (state == "Sz2")
    year = "000" + year;
  else if (state == "Sz3")
    year = "00" + year;
  else if (state == "Sz4")
    year = "0" + year;
  else if (state != "Send")
    return "Fehler: unbekannter Endzustand";
    
  return day + "." + month + "." + year;
  
}
function checkForCurrentDate(str)
{
  str = normDate(str);
  if (str.charAt(0) == "F")
    return str;

  var day = str.substring(0,2);
  var month = str.substring(3,5);
  var year = str.substring(6,10);
  var date = new Date();
  if (day == "00")
  {
    day = date.getDate();
    if (day.length == 1)
      day = "0" + day;
  }
  if (month == "00")
  {
    month = date.getMonth();
    month = month*1 + 1;
    month += "";
    if (month.length == 1)
      month = "0" + month;
  }
  if (year == "0000")
    year = date.getYear();
  else if (year.substring(0,2) == "00")
  {
    if ((year.substring(2,4)*1)>50)
      year="19"+year.substring(2,4);
    else
      year="20"+year.substring(2,4);
  }
  return day+"."+month+"."+year;
}
// berechnet die Tage innerhalb eines Monats
function daysInMonth(month,year)
{
  var result = 0;
  if (month == 01 || month == 03 || month == 05 || month == 07 || month == 08 || month == 10 || month == 12)
    result = 31;
  else if (month == 04 || month == 06 || month == 09 || month == 11)
    result = 30;
  else if (month == 02)
    result = (!((year%100)%4) && (year % 100) || !(year%400)) ? 29 : 28;
  return result;
}
// prueft auf ein gueltiges Datum
function checkForValidDate(str)
{
  str = normDate(str);
  if (str.charAt(0) == "F")
    return false;
  str = checkForCurrentDate(str);
  // nutzt die Eigenschaft von daysInMonth 0 bei einem ungueltigen Monat aus
  return (str.substring(0,3) <= daysInMonth(str.substring(3,5),str.substring(6,10))); 
}
// prueft auf Datum kleiner oder gleich dem vorgegebenen Datum
function checkDateMax(date,maxDate)
{
  var d = (date.substring(0,2)*1);
  var m = (date.substring(3,5)*1);
  var y = (date.substring(6,10)*1);
  var dmax =(maxDate.substring(0,2)*1);
  var mmax = (maxDate.substring(3,5)*1);
  var ymax = (maxDate.substring(6,10)*1);
  
  return (y<ymax || (y==ymax && (m<mmax || (m==mmax && d<=dmax))));
}
// prueft auf Datum groesser oder gleich dem vorgegebenen Datum
function checkDateMin(date,minDate)
{
  return checkDateMax(minDate,date);
}
// prueft auf Datum in einem Datumsbereich
function checkDateMinMax(date,minDate,maxDate)
{
  return ((checkDateMax(date, maxDate))&&(checkDateMin(date,minDate)))
}
// prueft ob 2 Datums im selben Monat+Jahr liegen
// z.B. Vorfall und Valutadatum
function compDate(feld1,feld2){
  if(checkDate(feld1)){
     var date1 = getField(feld1);
     var m1 = (date1.substring(3,5)*1);
     var y1 = (date1.substring(6,10)*1);
  }
  
  if(checkDate(feld2)){
     var date2 = getField(feld2);
     var m2 = (date2.substring(3,5)*1);
     var y2 = (date2.substring(6,10)*1);
  }

  return((m1==m2) && (y1==y2));
}

// Auf Prozentwert pruefen
function checkPercent(field)
{
  var result = false;
  var value = getField(field);
  if (value != "")
  {
    if (!isNaN(value))
    {
      result = true;
      if ( value < 0 || value > 100)
      {
        result = false;
      }
    }
  }
  if (!result)
  {
    resetField(field,"Bitte geben Sie einen Prozentwert zwischen 0 und 100 ein.");
  }
  return result;
}

// Geldbetrag pruefen
function checkMoney(field)
{
  var result = false;
  var value = getField(field);
  if (value != "")
  {
    if (!isNaN(value))
    {
      result = true;
    }
  }
  if (!result)
  {
    resetField(field,"Bitte geben Sie einen Geldbetrag ein.");
  }
  return result;
}
function formOK()
{
  window.scroll(0,0);
  hide("mainform");
  show("goform");
}
// decimal feld pruefen - und auf 2 nachkommastellen setzen wenn kleiner
function checkDecimal(item) {
     var val = getField(item);
     val = val.replace('\,','\.');
     var valcopy = val;
     if ( isNaN(val) == true ) {
        valcopy = val;
        valcopy = valcopy.replace(/[a-z]/ig,"");
        //alert(" kein numerischer  Wert " + val + " jetzte : " + valcopy);
        val = valcopy;
     }
 
     if ( isNaN(val) == false ) {
        /* Numerisch (integer oder decimal) */
        var match = val.search(/\./);
        if ( match ==  -1 ) { val = val + ".00"; }
        else {
                for ( ; val.length - match < 3; ) {
                      val = val + "0";
                      match = val.search(/\./);
                }
        }
     }
     if ( isNaN(val) == false ) {
	 setField(item,val);
     }
     else {
        /* geht einfach ncht */
        alert( val + " ist keine numerischer Wert!" );
        setFocus(item);
     }
}
// Formularfelder pruefen
function checkForm() 
{
  var result = true;
  result = checkThisForm();
  if (result)
  {
    formOK();
  }

  return result;
}
// Initial alle Meldungen verstecken
function hideMessage()
{
  window.scroll(0,0);
  hide("goform");
  hide("breakform");
}
function breakForm()
{
  if (confirm("Mit dem Abbruch wirklich fortfahren?"))
  {
    window.scroll(0,0);
    breakThisForm();
    hide("mainform");
    show("breakform");
    document.form.reset();
    document.form.VBREAK.value = "true";
    document.form.submit();
  }
}
function initDocument()
{
  hideMessage();
  initThisDocument();
}
// Normierungsfunktionen
function normCash(cash)
{
  var result;
  var num = cash * 100;
  num = Math.round(num);
  num /= 100;
  if (num == Math.round(num))
  {
    result = num + ".00";
  }
  else if ((num * 10) == Math.round(num*10))
  {
     result = num + "0";
  }
  else
  {
     result = num;
  }
  return result
}
