//----------------------------------------------------------------------------//
//  Macht eine Testausgabe von 'aText' in einem neuen Fenster                 //
//----------------------------------------------------------------------------//
function testAusgabe( aText )
{
  helpwin = window.open( "", "Testausgabe", "width=500,height=600,scrolling=yes" ) ;
  helpwin.document.open( "text/plain" ) ;
  helpwin.document.write( aText ) ;
  helpwin.document.close() ;
}


//----------------------------------------------------------------------------//
//  Sucht Objekte/Elemente mit Namen 'name' im document 'docu'                //
//  Der Parameter 'docu' muss nicht übergeben werden. Dann wird das           //
//  Hauptdocument, d.h., die aktuelle Seite, verwendet.                       //
//----------------------------------------------------------------------------//
function findObj(name, docu) //v3.0
{
  var p, i, obj;

  if (!docu)
    docu = document;

  if ((p = name.indexOf("?"))>0 && parent.frames.length)
  {
    docu = parent.frames[name.substring(p+1)].document;
    name = name.substring(0, p);
  }

  if ( docu.getElementById )
  {
    obj = docu.getElementById(name);
    if (obj)
    {
      return obj ;
    }
  }

  if ( docu.getElementsByName )
  {
    obj = docu.getElementsByName(name)[0];
    if (obj)
    {
      return obj ;
    }
  }

  if ( !obj )
  {
    obj = docu[name] ;
    if (obj)
    {
      return obj ;
    }
  }

  if ( !obj && docu.all)
  {
    obj = docu.all[name];
    if (obj)
    {
      return obj ;
    }
  }

  for (i=0; !obj && i<docu.forms.length; i++)
  {
    obj = docu.forms[i][name];
  }

  for (i=0; !obj && docu.layers && i<docu.layers.length; i++)
  {
    obj = findObj(name, docu.layers[i].document);
  }

  return obj;
}


//----------------------------------------------------------------------------//
//  Entfernt führende Leerzeichen von 'value'                                 //
//----------------------------------------------------------------------------//
function trimFront(value)
{
  var i=0 ;
  for (i=0 ; i < value.length ; i++)
  {
    if (value.charAt(i) != " ")
      break ;
  }
  if (i > 0)
    value = value.substring(i, value.length) ; // Zahl ohne führende Leerzeichen

  return value ;
}


//----------------------------------------------------------------------------//
//  Entfernt anhängende Leerzeichen von 'value'                               //
//----------------------------------------------------------------------------//
function trimBack(value)
{
  var i=0 ;
  for (i=value.length-1 ; i >= 0  ; i--)
  {
    if (value.charAt(i) != " ")         // anhängende Leerzeichen
      break ;
  }
  if (i < value.length-1)
    value = value.substring(0, i+1) ;  // Leerzeichen abschneiden

  return value ;
}


//----------------------------------------------------------------------------//
//  Gibt 'true' zurück, wenn 'value' eine Gleitkommazahl ist ( z.B. 12,35     //
//  oder 0,4), sonst 'false'.                                                 //
//----------------------------------------------------------------------------//
function checkGleitKommaZahl(value)
{
  if (value == "")
    return false ;

  value = trimFront(value) ;
  value = trimBack(value) ;

  value = value.replace(/\./g, "_") ;   // Punkte beseitigen (wandeln zu '_')
  value = value.replace(/,/, ".") ;     // Kommas in Punkte wandeln


  floatValue = parseFloat(value) ;      // Floatzahl ermitteln

  if ( isNaN(floatValue) )              // wenn kein Zahlenformat
    return false ;

  // Zahlenformat zwar erkannt, aber ist der Wert bis zum Ende wirklich numerisch ?
  // Bsp.: '1,27g' oder '1,27,' würde als 1,27 interpretiert, Darum vom Ende testen...
  var countColon = 0 ;
  for (i=value.length-1 ; i >= 0  ; i--)
  {
    if ( value.charAt(i) < "0" || value.charAt(i) > "9" )
    {
      if (value.charAt(i) == ".") // wenn keine Ziffer, darf nur
      {                           // einmalig ein Punkt auftreten!
        if (countColon > 0)
          return false ;
        else
          countColon++ ;
      }
      else
        return false ;
    }
  }

  return true ;
}


//----------------------------------------------------------------------------//
//  Gibt 'true' zurück, wenn 'value' eine Ganzzahl ( z.B. 2 oder 3,0) oder    //
//  x,5-Zahl (z.B. 0,5 oder 17,5) ist, sonst 'false'.                         //
//----------------------------------------------------------------------------//
function checkGanzZahlOderKommaFuenf(value)
{
  if ( !checkGleitKommaZahl(value) )
    return false ;

  var teile = value.split(",") ;

  if ( teile.length == 2 && teile[1] != "5" )
    return false ;

  return true ;
}


//----------------------------------------------------------------------------//
//  Gibt 'true' zurück, wenn 'value' eine Ganzzahl der Länge 'len' ist        //
//  sonst 'false'. (z.B. Prüfung PLZ: checkGanzzahlUndLaenge(plz, 5))         //
//----------------------------------------------------------------------------//
function checkGanzzahlUndLaenge(value, len)
{
  if (len <= 0)
    return false ;

  if (value == "" || value.length != len)
    return false ;

  for (i=0 ; i < value.length ; ++i)
  {
    if (value.charAt(i) < "0" || value.charAt(i) > "9")
    {
      break ;
    }
  }

  if (i < value.length)
    return false ;

  return true ;
}


//----------------------------------------------------------------------------//
//  Gibt 'true' zurück, wenn 'value' eine gültige Postleitzahl ist.           //
//----------------------------------------------------------------------------//
function checkPLZ(value)
{
  return checkGanzzahlUndLaenge(value, 5) ;
}


//----------------------------------------------------------------------------//
//  Gibt 'true' zurück, wenn der string 'email' eine korrekte eMail der Form  //
//  'abc@efg.de' ist, sonst 'false'. ('a@b.c' wäre auch korrekt)              //
//----------------------------------------------------------------------------//
function checkEmail(email)
{
  if (email == "")
    return false ;

  var posDot = email.indexOf(".") ;       // Erste Position von '.' ermitteln

  if ( posDot == 0 )                      // '.' steht an erster Stelle
    return false ;

  var posAt = email.indexOf("@") ;        // Erste Position von '@' ermitteln

  if ( posAt < 1 )                        // '@' nicht vorhanden oder an 1. Stelle
    return false ;

  if ( posAt != email.lastIndexOf("@") )  // Letzte Position von '@' ermittlen,
    return false ;                        // wenn nicht gleich erste Position,
                                          // ist '@' mehr als einmal vorhanden

  var domainPart = email.substring(posAt+1, email.length) ; // Domainteil nach
                                                            // dem '@' ausschneiden
  if ( !domainPart.length )               // nach '@' folgt kein Zeichen mehr
    return false ;

  posDot = domainPart.indexOf(".") ;      // Erste Position von '.' ermitteln

  if ( posDot < 1 )                       // '.' nicht vorhanden oder an 1. Stelle
    return false ;

  if ( domainPart.lastIndexOf(".") == domainPart.length-1 ) // '.' steht am Ende
    return false ;

  return true ;
}


//----------------------------------------------------------------------------//
//  Gibt den Wert des selektierten Elements einer Auswahlliste zurück.        //
//----------------------------------------------------------------------------//
function getSelectedValue( selectList )
{
  return selectList.options[selectList.selectedIndex].value ;
}

