
function initForms()
{
  if(!document.getElementsByTagName) return;
  var arrInput=document.getElementsByTagName("form");
  for(var i=0;arrInput[i];i++) if(!arrInput[i].onsubmit)
  {
    arrInput[i].onsubmit=function()
    {
      return validate(this);
    }
  }
}

function selectFirstInput()
{
  if(window.autoselect===false)
    return;
  if(document.forms[0])
    for(var e,i=0;e=document.forms[0].elements[i];i++)
      if(e.type=="text"||e.type=="password")
      {
        e.focus();
        return;
      }
}

function attrib(obj,key)
{
  if(obj.attributes&&obj.attributes[key]) return obj.attributes[key].value;
  if(obj[key]) return obj[key];
}

function validate(objForm)
{
  var e,k,r,i,valid=true,emsg="";

  // zahlen mit komma umwandeln (punkt)
  var komma=/^\d+,\d+$/;
  for(i=0;e=objForm.elements[i];i++)
    if(e.type=="text"&&komma.test(e.value))
      e.value=e.value.replace(",",".");

  //var w=window.open();
  //for(var a in objForm.elements.schluessel) w.document.write("<em>"+a+"</em> - "+objForm.elements.schluessel[a]+"<br>");

  // feldweise nach schema validieren, wenn vorhanden
  for(i=0;e=objForm.elements[i];i++)
  {
    if((e.type=="text"||e.type=="textarea")&&attrib(e,"pattern"))
    {
      r=new RegExp(attrib(e,"pattern"));
      if(!r.test(e.value))
      {
        if(attrib(e,"msg"))
          emsg+=attrib(e,"msg")+"\n";
        valid=false;
      }
    }
    else if(e.tagName.toLowerCase()=="select"&&attrib(e,"required"))
    {
      if(!e.options[e.selectedIndex].value)
      {
        if(attrib(e,"msg"))
          emsg+=attrib(e,"msg")+"\n";
        valid=false;
      }
    }
    else if(e.type=="text"&&attrib(e,"required"))
    {
      if(!e.value)
      {
        if(attrib(e,"msg"))
          emsg+=attrib(e,"msg")+"\n";
        valid=false;
      }
    }
    //else if(e.type=="password"&&e.name=="_password")
    else if(e.type=="password"&&/^_([a-z0-9_]*)password$/i.test(e.name))
    {
      var prefix=RegExp.$1;
      if(attrib(e,"required")&&!e.value)
      {
        if(attrib(e,"msg"))
          emsg+=attrib(e,"msg")+"\n";
        else
          emsg+="Es muss ein Passwort angegeben werden.\n";
        valid=false;
      }
      //else if(e.form.elements._passwordkontrolle&&e.value&&e.value!=e.form.elements._passwordkontrolle.value)
      else if((k=e.form.elements["_"+prefix+"passwordkontrolle"])&&e.value&&e.value!=k.value)
      {
        if(attrib(k,"msg"))
          emsg+=attrib(k,"msg")+"\n";
        else
          emsg+="Das Passwort stimmt nicht überein.\n";
        valid=false;
      }
    }
  }
  
  if(emsg) alert(emsg);
  return valid;
}

window.onload=function()
{
  initForms();
//  selectFirstInput();
}


