function SaveDate(j,m,d) {
  if (j>0 && j<100) j+=2000;
  var xx = new Date(j, m, d );
  return (!isNaN(xx) && xx.getFullYear()==j && xx.getMonth()==m && xx.getDate()==d) ? xx : Number.NaN;
}

var DateMsk=/^([0-3]?[0-9])\.([01]?[0-9])\.((19|20|)[0-9][0-9])( ([01]?[0-9]|2[0-3]):[0-5]?[0-9]:[0-5]?[0-9](\.[0-9]*)?)?$/;
  // Zeitangabe in der Form " hh:mm:ss" wird bei Prüfung ignoriert
function StrToDate(s) {
// s[str]
//   String, der zum Datum gemacht werden soll
  if (!DateMsk.exec(s)) return Number.NaN;
  return SaveDate(Number(RegExp.$3), Number(RegExp.$2)-1, Number(RegExp.$1) );
  /*var p1=s.indexOf('.');
  var p2=s.indexOf('.',p1+1);
  if (p2<0) return Number.NaN;
  var p3=s.indexOf('.',p2+1);
  if (p3>=0) return Number.NaN;
  return SaveDate(Number(s.substring(p2+1,s.length)), Number(s.substring(p1+1,p2))-1, Number(s.substring(0,p1)) );*/
}

function ignoreSpaces(string) {
var temp = "";
string = '' + string;
splitstring = string.split(" ");
for(i = 0; i < splitstring.length; i++)
temp += splitstring[i];
return temp;
}


function CommaToPoint (Nr) {
  Nr = Nr.replace(/,/,".");
  return Nr;
}

function TesteZahl(Z) { // Testet ein Zahleneingabefeld, z.B.  TestZahl(document.form.Zahl1)
  if (Z && Z.type!='hidden' && isNaN(Number(CommaToPoint(Z.value)))) {
    alert('Ungültige Zahl. Korrigieren Sie Ihre Eingaben');
    Z.focus();
    return false;
  } else return true;
}

function TesteStandardFormular(diff) { 
   //Wenn Datum, dann prüfen
   if (document.form.DatumVon) {
      var D1 = StrToDate(document.form.DatumVon.value);
      if ( isNaN(D1) ) return alert('Ungültiges Datum. Korrigieren Sie Ihre Eingaben'), document.form.DatumVon.focus(), false;
   }
   if (document.form.DatumBis) {
      var D2 = StrToDate(document.form.DatumBis.value);
      if ( isNaN(D2) ) return alert('Ungültiges Datum. Korrigieren Sie Ihre Eingaben'), document.form.DatumBis.focus(), false;
   }
      //if (D1.getYear<100) D1.setYear(D1.getYear+2000);
      //if (D2.getYear<100) D2.setYear(D2.getYear+2000);
   if (document.form.DatumVon && document.form.DatumBis) {
      if (D2-D1<0) return alert('DatumVon>DatumBis. Korrigieren Sie Ihre Eingaben'), false;
      if (D2-D1>diff*24*60*60*1000) 
         {if (!confirm('Ihr Auswertungszeitraum umfasst mehr als '+diff+" Tage !\n\nZur Änderung des Zeitraums  \"Abbrechen\"  klicken.\n")) return false;} 
   }
   //ev. vorhandene Leerzeichen raus aus LOGIN
   if (document.form.Login){
   document.form.Login.value = ignoreSpaces(document.form.Login.value);
   if (document.form.Login && document.form.Login.type=='text' && document.form.Login.value=='') {
      // bei type=='hidden' NICHT meckern.
      document.form.Login.focus();
      alert('Tragen Sie Ihr Login ein.');
      return false;
   }}
   if (document.form.PWD && document.form.PWD.type=='password' && document.form.PWD.value=='') {
      document.form.PWD.focus();
      alert('Tragen Sie Ihr Passwort ein.');
      return false;
   }
   if (!TesteZahl(document.form.Zahl1)) return false;
   if (!TesteZahl(document.form.Zahl2)) return false;
   if (!TesteZahl(document.form.Zahl3)) return false;
   if (!TesteZahl(document.form.Zahl4)) return false;
   if (!TesteZahl(document.form.Zahl5)) return false;
   if (!TesteZahl(document.form.Zahl6)) return false;
   if (!TesteZahl(document.form.Zahl7)) return false;
   if (!TesteZahl(document.form.Zahl8)) return false;
   if (!TesteZahl(document.form.Zahl9)) return false;
   return true;  
}

function TesteFormular(diff) { // damit in VVEPflege-JavaScript TesteFormular() einfach überschrieben werden kann
  return TesteStandardFormular(diff);
}
/*******************************************************************************************
*****   PointToPoint   *********************************************************************
*******************************************************************************************/
  // Sign [Str] Zeichen, das angezeigt werden soll
  // Anz [Int]  Anzahl Wiederholungen, bis erneut begonnen wird
function PointToPoint (Sign, Anz) {
  pointtopoint(Sign, Anz);
  //window.clearInterval();
  document.PointToPoint_Interval = window.setInterval ("pointtopoint(\"" + Sign + "\", " + Anz + ");", 200);
}

function pointtopoint (Sign, Anz) {
  var ptp;
  try {
    ptp=document.getElementById("pointtopoint");
  }
  catch (x) { /*window.state=document.state;*/  return; }

  if (!ptp) return 0;
  if (!ptp.hasChildNodes())
     ptp.appendChild(document.createTextNode(''));
  var Text = ptp.firstChild.nodeValue;
  if (Anz) {
    Text += Sign;
    if (Text.length >= Anz) {
      Text = Sign;
      ptp.onclick=function(){visible=1;Visible(0);};
      //document.getElementById("pointtopoint").style.cursor='pointer';
    }
  } else Text = Sign;
  ptp.firstChild.nodeValue = Text;
}

/*******************************************************************************************
*****   Eingabeprüfungen   *****************************************************************
*******************************************************************************************/
var visible = 1;
var Text = "";

/*******************************************************************************************
*****   Check   ****************************************************************************
*******************************************************************************************/
function Check() {
  //ev. vorhandene Leerzeichen raus aus LOGIN
  //alert('TESTE LOGIN');
  if (document.form.Login){
    document.form.Login.value= ignoreSpaces(document.form.Login.value);
  }
  // Prüft das Formular auf vollständiges Ausfüllen
  switch (visible) {
  case 1: // Eingabeprüfungen Formular =============================================
          if (TesteFormular(31)) {
              Visible (1); //Übertragungsschirm zeigen
              PointToPoint ("o", 50); //warteschlange
              return true;  
              //return false;  //zumTest umschalten auf false, sonst wird was abgeschickt...
              
          } else {
              Visible (0); //Originalseite 
              return false;  
          }
  case 2: // Link aufgerufen ====================================================
           Visible (1); //Übertragungsschirm zeigen
           PointToPoint ("*", 50); //warteschlange
           return true;  
           //return false;  //zumTest umschalten auf false, sonst wird was abgeschickt...
  
  case 3: // Passwort ändern gedrückt, prüfe nur Passwortfelder
      if ( !document.form.PWDNeu1 || !document.form.PWDNeu2 ) return false; // darf eigentlich nie vorkommen
      var Text = "";
      if (document.form.PWDNeu1.value != document.form.PWDNeu2.value) {
        Text += "Sie haben zwei verschiedene Passwörter eingegeben.\n" +
          "Passwort und Passwortbestätigung stimmen nicht überein.\n" + 
          "_________________________\n" + 
          "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\n";
        document.form.PWDNeu1.select();
      }
      if (document.form.PWDNeu1.value.length < 3) {
        Text += "Ihr neues Passwort ist zu kurz.\n" +
          "Es muss mindestens 3 Zeichen enthalten!\n" +
          "_________________________\n" + 
          "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\n";
        document.form.PWDNeu1.select();
      }
      if (! /^[A-Za-z0-9\!#]*$/.test(document.form.PWDNeu1.value)) {
        Text += "Ihr neues Passwort enthält ungültige Zeichen!\n" +
          "Es dürfen nur Buchstaben, Zahlen das Ausrufezeichen\xA0! "+
          "und das Doppelkreuz\xA0# enthalten sein.\n" +
          "_________________________\n" + 
          "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\n";
        document.form.PWDNeu1.select();
      }
      if (Text != "") {
        alert (Text);
        return false;
      } else {
        Visible (1); //Übertragungsschirm zeigen
        PointToPoint ("o", 50); //warteschlange
        return true;
      }
  
  default:  // sonstiges ===============================================================
    Visible (0);
    return false;
  }
}


/*******************************************************************************************
*****   UnVisible   ************************************************************************
*******************************************************************************************/
function UnVisible() {
  if (document.all) {
    document.all.F_Form.style.setAttribute("display", "none", false);
    document.all.F_Submit.style.setAttribute("display", "none", false);
  } else if (document.getElementsById) {
    document.getElementById("F_Form").style.visibility = "hidden";
    document.getElementById("F_Form").style.height = "0";
    document.getElementById('F_Submit').style.visibility = "visible";
    document.getElementById('F_Submit').style.height = "auto";
    document.getElementById("F_Submit").style.display = "block"; // NS6 brauchte das noch nicht, aber Mozilla!
  }
}

/*******************************************************************************************
*****   Visible   **************************************************************************
*******************************************************************************************/
  // vis [Int] Was soll angezeigt werden?
  // 0 - die originalen Teile der Seite
  // 1 - der Wartebildschirm während der Übertragungsphase
  // 2 - auf Link geklickt
  // 3 - Passwort ändern
function Visible(vis) {
  //UnVisible();
  switch (vis)
  {
    case 0:
      if (document.all) {
        document.getElementById("F_Form").style.display="block";
        document.getElementById('F_Submit').style.display="none";
      } else if (document.getElementById) {
        document.getElementById("F_Form").style.visibility = "visible";
        document.getElementById("F_Form").style.height = "auto";
        document.getElementById('F_Submit').style.visibility = "hidden";
        document.getElementById('F_Submit').style.height = "0";
      }
      if (document.PointToPoint_Interval) {
        window.clearInterval(document.PointToPoint_Interval);
        document.PointToPoint_Interval = null;
        pointtopoint('',0);
      }
      break;
    case 1:
      if (document.all) {
        document.getElementById('F_Form').style.display="none";
        document.getElementById('F_Submit').style.display="block";
      } else if (document.getElementById) {
        document.getElementById('F_Form').style.visibility = "hidden";
        document.getElementById('F_Form').style.height = "0";
        document.getElementById('F_Submit').style.visibility = "visible";
        document.getElementById('F_Submit').style.height = "auto";
        document.getElementById("F_Submit").style.display = "block"; // NS6 brauchte das noch nicht, aber Mozilla!
      }
      break;
    default:
      alert("Interner Fehler!\nAktion: " + vis);
      break;
  }
}
if (typeof window.onunload != 'function') window.onunload = function(){};

function openWindow(pageToLoad, winName, center, popwidth, popheight) {
 var xposition=0; 
 var yposition=0;

 if (!winName)   winName  ='_blank';
 if (!popheight) popheight=400;
 if (!popwidth)  popwidth =660;
 if (popheight>screen.height) popheight>screen.height;
 if (popwidth >screen.width ) popwidth >screen.width;
 if (center) {
   xposition = (screen.width - popwidth) / 2;
   //if (xposition < 280) xposition = 280;
   yposition = (screen.height - popheight) / 2;
 }
 args = "width=" + popwidth + ","
   + "location=0,"
   + "menubar=0,"
   + "resizable=1,"
   + "status=0,"
   + "titlebar=0,"
   + "toolbar=0,"
   + "scrollbars=yes,"
   + "height=" + popheight + ","
   + "screenx=" + xposition + ","  //NN
   + "screeny=" + yposition + ","  //NN
   + "left=" + xposition + ","    //IE
   + "top=" + yposition;          //IE
 var popwin=window.open(pageToLoad,winName,args);
 popwin.focus();
 return popwin;
}
