//Installieren
Formular = new FormularKlasse()


//Konstruktor
function FormularKlasse()
{

 //Eigenschaften
 this.Feld = new Array()

 //Methoden
 this.geladen = FormularGeladen
 this.validieren = FormularValidieren

 //Methoden zur Datenvalidierung
 this.istLeer = FormularIstLeer
 this.istNichtLeer = FormularIstNichtLeer
 this.einOderMehrereWerteAusgewaehlt = FormularEinOderMehrereWerteAusgewaehlt

 //Variablen
 this.AktFeld = ""
 this.onFocusFunktionsvariable = new Array()
 this.onChangeFunktionsvariable = new Array()
 this.onBlurFunktionsvariable = new Array()

 //Private Methoden
 this.sucheFeldindex = FormularSucheFeldindex
 this.onFocus = FormularOnFocus
 this.onChange = FormularOnChange
 this.onBlur = FormularOnBlur
}


//Geladen
function FormularGeladen()
{

 var Elementindex,Feldindex

 //Ereignissen der angegebenen Feldern Funktionen zuordnen
 for (Elementindex=0;Elementindex<document.forms[0].elements.length;Elementindex=Elementindex+1)
 {
  if ((Feldindex = this.sucheFeldindex(document.forms[0].elements[Elementindex].name)) >= 0)
  {
   this.onFocusFunktionsvariable[Feldindex] = new Function("return Formular.onFocus("+Elementindex+","+Feldindex+")")
   document.forms[0].elements[Elementindex].onfocus = this.onFocusFunktionsvariable[Feldindex]
   this.onChangeFunktionsvariable[Feldindex] = new Function("return Formular.onChange("+Elementindex+","+Feldindex+")")
   document.forms[0].elements[Elementindex].onchange = this.onChangeFunktionsvariable[Feldindex]
   this.onBlurFunktionsvariable[Feldindex] = new Function("return Formular.onBlur("+Elementindex+","+Feldindex+")")
   document.forms[0].elements[Elementindex].onblur = this.onBlurFunktionsvariable[Feldindex]
  }
 }
}


//Validieren
function FormularValidieren()
{
 var i
 for (i=0;i<this.Feld.length;i=i+1)
 {
  if (this.onBlurFunktionsvariable[i] == null) continue //Mangel 5 umgehen
  if (this.onBlurFunktionsvariable[i]() == false) return false
 }
 return true
}


//Suche Feldindex
function FormularSucheFeldindex(Feldname)
{
 var i
 for (i=0;i<this.Feld.length;i=i+1)
  if (this.Feld[i][0] == Feldname) return i
 return -1
}


//OnFocus behandeln
function FormularOnFocus(Elementindex,Feldindex)
{
 if (this.AktFeld == "") this.AktFeld = this.Feld[Feldindex][0]
 if (this.AktFeld != this.Feld[Feldindex][0]) return true
 return this.Feld[Feldindex][1]("onFocus",Elementindex,Feldindex)
}


//OnChange behandeln
function FormularOnChange(Elementindex,Feldindex)
{
 if (this.AktFeld == "") this.AktFeld = this.Feld[Feldindex][0]
 if (this.AktFeld != this.Feld[Feldindex][0]) return true
 return this.Feld[Feldindex][1]("onChange",Elementindex,Feldindex)
}


//OnBlur behandeln
function FormularOnBlur(Elementindex,Feldindex)
{
 if (this.AktFeld == "") this.AktFeld = this.Feld[Feldindex][0]
 if (this.AktFeld != this.Feld[Feldindex][0]) return true
 if (this.Feld[Feldindex][1]("onBlur",Elementindex,Feldindex) == false)
 {
  alert(this.Feld[Feldindex][2])
  document.forms[0].elements[Elementindex].focus()
  return false
 }
 else this.AktFeld = ""
 return true
}


//Datenvalidierungsfunktionen
function FormularIstLeer(Ereignis,Elementindex)
{
 if (Ereignis == "onBlur" && document.forms[0].elements[Elementindex].value != "") return false
 return true
}

function FormularIstNichtLeer(Ereignis,Elementindex)
{
 if (Ereignis == "onBlur" && document.forms[0].elements[Elementindex].value == "") return false
 return true
}

function FormularEinOderMehrereWerteAusgewaehlt(Ereignis,Elementindex)
{
 var i
 var z = 0
 if (Ereignis == "onBlur")
 {
  for (i=0;i<document.forms[0].elements[Elementindex].length;i=i+1)
   if (document.forms[0].elements[Elementindex].options[i].selected == true) z = z + 1
  if (z < 1) return false
 }
 return true
}

