// -----------------------------------------------------------------------------
// - Selektor für Feldprüfung --------------------------------------------------
// -----------------------------------------------------------------------------

function CheckField( feld, feldname, typ )
{
  if (!feld)
  {
    alert("Feld '" + feldname + "' kann nicht geprüft werden!") 
    return (false)
  }
  switch ( typ ) 
  {
    case "DropDown": return CheckDropDown( feld, feldname ); break;
    case "EMail":    return CheckEMail(    feld, feldname ); break;
    case "String":   return (true); break;
    case "AlphaNum": return CheckAlphaNum( feld, feldname ); break;
    case "TextArea": return CheckTextArea( feld, feldname ); break;
    case "Number":   return CheckNumber(   feld, feldname ); break;
    case "Datum":    return CheckDatum(    feld, feldname ); break;
    case "PLZ":      return CheckPLZ(      feld, feldname ); break;
    case "URL":      return CheckURL(      feld, feldname ); break;
    default:         alert("Datentyp nicht definiert"); return (false); break;
  }
  return true;
}

// -----------------------------------------------------------------------------
// - CheckOK - Alle Checks ok --------------------------------------------------
// -----------------------------------------------------------------------------

function SetFocusOn( feld )
{
  if (feld)
  {
    feld.focus()
//    formular.feld.focus()
    return (true)
  }
}

// -----------------------------------------------------------------------------
// - CheckOK - Alle Checks ok --------------------------------------------------
// -----------------------------------------------------------------------------

function CheckOK( feld )
{
  if (!feld)
  {
    alert("Fehler !!! Das Feld kann nicht gesetzt werden.")
    return (false)
  }
  else
  {
    feld.value = true;
    return true;
  }
}

// -----------------------------------------------------------------------------
// - Check - Alphanumerisch ----------------------------------------------------
// -----------------------------------------------------------------------------

function CheckAlphaNum( feld, feldname )
{
  if (( feld.pflicht == 'Wahr' ) | ( feld.pflicht == 'True' ))
  { return CheckNotNull( feld, feldname ) }
  else
  { return true }
}

// -----------------------------------------------------------------------------
// - Check - Number ------------------------------------------------------------
// -----------------------------------------------------------------------------

function CheckNumber( feld, feldname )
{
  if (( feld.pflicht == 'Wahr' ) | ( feld.pflicht == 'True' ))
  { return CheckNotNull( feld, feldname ) }
  laenge = feld.value.length;
  if (laenge)
  { return CheckDigitsOnly( feld, feldname )}
  return true;

}

// -----------------------------------------------------------------------------
// - Check - Url ---------------------------------------------------------------
// -----------------------------------------------------------------------------

function CheckURL( feld, feldname )
{
  if (( feld.pflicht == 'Wahr' ) | ( feld.pflicht == 'True' ))
  {
    if (!CheckNotNull( feld, feldname )) return false;
  }
  laenge = feld.value.length;
  if (laenge) 
  {
    if ( feld.value.substring(0, 7).toUpperCase() != 'HTTP://' )
    {
      alert('Bitte eine korrekte URL, inklusive "http://", eingeben.')
      return false;  
    }
    intDoppelSlash = feld.value.indexOf('//', 0)
    firstdot       = feld.value.indexOf('.', intDoppelSlash + 1 )
    nextdot        = feld.value.indexOf('.', firstdot + 1 )
    if ((intDoppelSlash > firstdot - 2) |
        (firstdot       > nextdot  - 2) |
        (nextdot        > laenge   - 2) )
    {
      alert('Bitte eine korrekte URL eingeben.')
      return false;
    }
  }
  return true;
}

// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------

function CheckEMail( feld, feldname )
{
  if (( feld.pflicht == 'Wahr' ) | ( feld.pflicht == 'True' ))
  {
    if (!CheckNotNull( feld, feldname )) return false;
  }

  laenge = feld.value.length;
  if (laenge != 0)
  {
    if (!CheckLengthMin( feld, feldname, 8 )) 	return (false);
    if (!CheckLengthMax( feld, feldname, 65 ))	return (false);

    firstat   = feld.value.indexOf('@',0)
    lastat    = feld.value.lastIndexOf('@',laenge)
    firstdot1 = feld.value.indexOf('.',0)
    firstdot2 = feld.value.indexOf('.',firstat)
    lastdot   = feld.value.lastIndexOf('.',laenge)
    dotat1    = Math.abs(firstat-firstdot1)
    dotat2    = Math.abs(firstat-lastdot)
/*    
    alert(firstat)
    alert(lastat)
    alert(firstdot1)
    alert(firstdot2)
    alert(lastdot)
    alert(dotat1)                
    alert(dotat2)
*/    
    if (( firstat   < lastat   ) |
        ( firstat   < 2        ) |
        ( lastat    > laenge-7 ) |
        ( dotat1    < 2        ) |
        ( dotat2    < 3        ) |
        ( firstdot1 < 1        ) |
        ( firstdot2 < 2        ) |
        ( lastdot   < lastat   ) |
        ( lastdot   > laenge-3 ) |
        ( lastat    > lastdot-1) )
    {
      alert('Bitte eine korrekte E-Mail Adresse eingeben.')
      feld.focus()
      return false;
    }
  }
  return true
}

// -----------------------------------------------------------------------------
// - Check - DropDown Boxen ----------------------------------------------------
// -----------------------------------------------------------------------------

function CheckDropDown( feld, feldname )
{
  if (( feld.pflicht == 'Wahr' ) | ( feld.pflicht == 'True' ))
  {
    // wegen Netscape etwas kompliziert
    if ( feld.options[feld.selectedIndex].value == "0" )
    {
      alert("Wählen Sie einen Wert im Feld \"" + feldname + "\" aus. ")
      feld.focus()
      return (false)
    }
  }
  return true
}

// -----------------------------------------------------------------------------
// - CheckNotNull --------------------------------------------------------------
// -----------------------------------------------------------------------------

function CheckNotNull( feld, feldname )
{
  if (( feld.value == "" ) | ( feld.value.length == 0 ))
	{
		alert("Geben Sie einen Wert in das Feld \"" + feldname + "\" ein. ")
		feld.focus()
		return (false)
	}
	return true
}

// -----------------------------------------------------------------------------
// - Check - Mindestlaenge -----------------------------------------------------
// -----------------------------------------------------------------------------

function CheckLengthMin( feld, feldname, laenge )
{
	if ( feld.value.length < laenge )
	{
		alert("Geben Sie mindestens " + laenge + " Zeichen in das Feld \"" + feldname + "\" ein.");
		feld.focus();
		return (false);
	}
	return true
}

// -----------------------------------------------------------------------------
// - Check - Maximumlaenge -----------------------------------------------------
// -----------------------------------------------------------------------------

function CheckLengthMax( feld, feldname, laenge )
{
	if ( feld.value.length > laenge )
	{
		alert("Geben Sie höchstens " + laenge + " Zeichen in das Feld \"" + feldname + "\" ein.");
		feld.focus();
		return (false);
	}
	return true
}

// -----------------------------------------------------------------------------
// - Check - nur Zahlen, Minus und . -------------------------------------------
// -----------------------------------------------------------------------------

function CheckDigits( feld, feldname )
{
	var checkOK = "0123456789-.";
	var checkStr = feld.value;
	var allValid = true;

	for (i = 0; i < checkStr.length; i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}
	}

	if (!allValid)
	{
		alert("Geben Sie nur Ziffern und \".\"-Zeichen in das Feld \"" + feldname + "\" ein.");
		feld.focus();
		return (false);
	}
	return (true)
}

// -----------------------------------------------------------------------------
// - Check - nur Zahlen --------------------------------------------------------
// -----------------------------------------------------------------------------

function CheckDigitsOnly( feld, feldname )
{
	var checkOK = "0123456789";
	var checkStr = feld.value;
	var allValid = true;

	for (i = 0;  i < checkStr.length; i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length)
		{
			allValid = false;
			break;
		}
	}

	if (!allValid)
	{
		alert("Geben Sie nur Ziffern in das Feld \"" + feldname + "\" ein.");
		feld.focus();
		return (false);
	}
	return (true)
}

// -----------------------------------------------------------------------------
// - Check Datum ---------------------------------------------------------------
// -----------------------------------------------------------------------------

function CheckDatum( feld, feldname )
{
  if ( feld.pflicht == 'Wahr' )
  {	
    if (!CheckNotNull( feld, feldname ))        return (false);
  }
  laenge = feld.value.length;
  if (laenge)
  {
//    if (!CheckLengthMin( feld, feldname, 6 )) 	return (false);
//    if (!CheckLengthMax( feld, feldname, 10 ))	return (false);
//    if (!CheckDigits(    feld, feldname ))      return (false);

    firstdot  = feld.value.indexOf('.',0)
    lastdot   = feld.value.lastIndexOf('.',laenge)

    if (( firstdot == lastdot  ) |
        ( firstdot == 0        ) |
        ( lastdot  == 0        ) |
        ( firstdot < 1         ) |
        ( lastdot  > laenge -1 ) |
        ( firstdot > lastdot-2 ))
    {
      alert('Bitte Datum im Format "tt.mm.jjjj" eingeben.'); return false;
    }

    tag   = feld.value.substring(0, firstdot)
    monat = feld.value.substring(firstdot+1,lastdot)
    jahr  = feld.value.substring(lastdot+1, laenge)

    if (isNaN(tag))   {alert('Der Tag muss eine Zahl sein.');   feld.focus(); return (false)} else {tag   = parseFloat(tag)}
    if (isNaN(monat)) {alert('Der Monat muss eine Zahl sein.'); feld.focus(); return (false)} else {monat = parseFloat(monat)}
    if (!(jahr.length==4)) {alert('Das Jahr muss eine Länge von vier Zeichen haben.'); feld.focus(); return (false)}
    if (isNaN(jahr))  {alert('Das Jahr muss eine Zahl sein.');  feld.focus(); return (false)} else {jahr  = parseFloat(jahr)}

    if ((monat<1)   | (monat>12))  {alert('Der Monat muss ein Wert von 1 bis 12 sein.'); return false} 
    if ((jahr<1900) | (jahr>3000)) {alert('Das Jahr muss ein Wert von 1900 bis 3000 sein.'); return false}

    if ((monat==1)|(monat==3)|(monat==5)|(monat==7)|(monat==8)|(monat==10)|(monat==12))
    {Tage=31;}
    else
    {
      if (!(monat==2))
      {Tage=30;}
      else
      {
        if (( jahr%4 == 0 ) & ( !( jahr%100 == 0 ) | ( jahr%400 == 0)))
        {Tage=29;} 
        else 
        {Tage=28;}
      }
    }

    if ((tag<1) | (tag>Tage)) {alert('Der Tag muss ein Wert von 1 bis '+Tage+' sein.'); feld.focus(); return false} 
    else {;}

  }
  return true	
}

// -----------------------------------------------------------------------------
// - Check PlZ -----------------------------------------------------------------
// -----------------------------------------------------------------------------

function CheckPLZ( feld, feldname )
{
  if ( feld.pflicht == 'Wahr' )
  {	
    if (!CheckNotNull( feld, feldname ))       return (false);
  }
  if (!CheckLengthMin(  feld, feldname, 5 )) return (false);
  if (!CheckLengthMax(  feld, feldname, 5 )) return (false);
  if (!CheckDigitsOnly( feld, feldname ))    return (false);
  return true	
}

// -----------------------------------------------------------------------------
// - Check Gleichheit ----------------------------------------------------------
// -----------------------------------------------------------------------------

function CheckEqual( feld1, feld2, feldname1, feldname2 )
{
  if (!(feld1.value == feld2.value))
  {	
    alert( 'Die Felder "'+feldname1+'" und "'+feldname2+'" müssen den gleichen Wert enthalten.');feld1.focus();return false
  }
  return true	
}

// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------

function Show_Props( Obj )
{
  var wert, output
  for (wert in Obj)
  {
//    output = output + wert +' = '+ Obj[wert] +'\n'
    output = output + wert +' = '+ Obj[wert] +' | '

  }
  alert(output)
}
