//################################
//## 
//## check_form - Skript   v1.0   
//##
//##   Copyright, (c) Web-Design Reischmann 2001
//##
//## Author :  F.Georg <Georg@Reischmann.de>
//## 
//################################      

var COUNT = 0;
var LASTERROR = "";


//## vordefinierte gültige Zeichen
var ALLE = "";

var TEL = "1234567890 -/";        
var BUCHSTABEN = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZäöüÄÖÜß";
var EMAIL      = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_.@";
var ZAHL = "1234567890";       




field_names = new Array ();
normal_names = new Array ();
valid_chars = new Array ();
min_lengths = new Array ();
max_lengths = new Array ();


//##############################################################
function register (_fieldname,_normalname,_validchars,_min,_max)
//##############################################################
{
  field_names[COUNT]  = _fieldname;
  normal_names[COUNT] = _normalname;
  
  _validchars == null ? valid_chars[COUNT] = "" : valid_chars[COUNT] = _validchars;                           
  _min == null ? min_lengths[COUNT] = 0 : min_lengths[COUNT] = _min;
  _max == null ? max_lengths[COUNT] = 0 : max_lengths[COUNT] = _max;
     
  
  COUNT++;
}


//##############################
function check_email (s)
//##############################
{
 // Checking existense of "@" and ".". The length of the input must be at least 7 characters. The "." must neither be preceding the "@" nor follow it.
 if((s.indexOf("@") == -1) || (s.charAt(0) == ".") || (s.charAt(0) == "@") 
    || (s.length < 7) || (s.indexOf(".") == -1) || (s.charAt(s.indexOf("@")+1) == ".") 
    || (s.charAt(s.indexOf("@")-1) == "."))
 {
   return false;
 }
 else
 {
   //## check, auf gültige Zeichen
   for (var i = 0;i < s.length;i++)
   {
     if ((EMAIL.indexOf (s.charAt (i)) < 0)) 
      return false;
   }
     
   
   return true;
 }
}


//##############################
function check (s,valid,min,max)
//##############################
{
  //## hier Weiche für spezielle Checks
  
  if (valid == EMAIL)
  {
    if (check_email (s)) return true
    else { LASTERROR = "ungültige E-Mail Adresse"; return false;}
  }


     

  for (var i = 0;i < s.length;i++)
  {
    //## bei valid == "" alles erlaubt
    if ((valid.indexOf (s.charAt (i)) < 0) && (valid != ""))
    {
      LASTERROR = "ungültige(s) Zeichen eingegeben";
      return false;
    }                                                  
  }

  if (min > 0)
  {
    if (s.length < min)
    {
      LASTERROR = "bitte mindestens "+min+" Zeichen eingeben";
      return false; 
    }  
  }
  
  if (max > 0)
  {
    if (s.length > max)
    {
      LASTERROR = "bitte höchstens "+max+" Zeichen eingeben";
      return false; 
    }  
  }           

  return true;

}



//##
//## Überprüft, ob alle Felder ausgefüllt wurden, und gibt ggf. eine entsprechende Meldung aus
//##
//##
//###################################################################
function check_form (theform)
//###################################################################
{

  var fieldname = "";

  for (var i in field_names)
  {
    var sname  = field_names[i];
    var sobj   = theform.elements[field_names[i]];
    if (sobj == null) alert ("CheckForm-Fehler:\nDas Feld '"+field_names[i]+"' existiert nicht im formular.\nBitte 'register(...)' Anweisungen prüfen");
    var svalue = sobj.value;

    

    //### Prüfung, und Fehlermeldung erzeugen
    if (((sobj.type == "text") && (svalue=="")) 
    || ((sobj.type == "text") && (!check(svalue,valid_chars[i],min_lengths[i],max_lengths[i])))
    || ((sobj.type == "checkbox") && (!sobj.checked)) 
    || ((sobj.type == "select-one") && (sobj.selectedIndex == 0)))
    {                                      
      
      fieldname += " - " + normal_names[i];
      if (LASTERROR != "") fieldname +=" ( "+LASTERROR+" )";
      
      LASTERROR = "";
      fieldname += "\n";
    }
  }


  if (fieldname != "")
  {
    alert ("please fill out the following fileds: \n\n"+fieldname);
    return false;
  }

  return true;

}
