﻿var isIE      = (navigator.appName == "Microsoft Internet Explorer");
function check_equal_type(typ) {
  if (typ=="button") return false;
  if (typ=="reset")  return false;
  if (typ=="submit") return false;
  if (typ=="image")  return false;
  return true;
}

function value_is_empty(checkobj) {
  if ((checkobj.type=="text")             && (checkobj.value==""))        return true;
  if ((checkobj.type=="hidden")           && (checkobj.value==""))        return true;    
  if ((checkobj.type=="password")         && (checkobj.value==""))        return true;
  if ((checkobj.type=="textarea")         && (checkobj.value==""))        return true;
  // Wenn nur ein Element in der Selectbox vorhanden ist, zählt auch selectedIndex=0 als nicht leer
  // 20080713 - umstellung von length > 1 auf length > 0
  if ((checkobj.type=="select-one")       && (checkobj.selectedIndex==0) && (checkobj.length>0)) return true;
  if ((checkobj.type=="select-multiple")  && (checkobj.selectedIndex==0)) return true;  
  // Checkbox (mindestens ein Wert muss gesetzt sein)
  if (checkobj.type=="checkbox") {
    var checkobj = checkobj.document.all(checkobj.name);
    for (var i=0; i<checkobj.length; i++) if (checkobj[i].checked && checkobj[i].value!='') return false;
    return true;  
  }  
  // radiobutton (mindestens ein Wert muss gesetzt sein)  
  if (checkobj.type=="radio") {
    var checkobj = checkobj.document.all(checkobj.name);
    for (var i=0; i<checkobj.length; i++) if (checkobj[i].checked && checkobj[i].value!='') return false;
    return true;  
  }
  return false;
}
function check_specialchars(checkThisString) {
  // nicht erlaubte sonderzeichen  
  var sz = new Array("ö","ä","ü","Ö","Ä","Ü","_"," ","!","§","$","%","&","/","(",")","=","ß","?","*","~","+","²","³","'","#");
  
  for (var s=0;s<checkThisString.length+1;s++) {  
    for (i=0; i <= sz.length; i++) {
      if (checkThisString.substr(s,1)==sz[i]) {
        return false;
      }
    }
  }
  return true;
}
function check_email(checkThisEmail) 
{
  var myEMailIsValid = true;
  var myAtSymbolAt = checkThisEmail.indexOf('@');
  var myLastDotAt = checkThisEmail.lastIndexOf('.');
  var mySpaceAt = checkThisEmail.indexOf(' ');
  var myLength = checkThisEmail.length;

  // at least one @ must be present and not before position 2
  // @yellow.com : NOT valid
  // x@yellow.com : VALID
  if (myAtSymbolAt < 1 ) 
    {myEMailIsValid = false}

  // at least one . (dot) afer the @ is required
  // x@yellow : NOT valid
  // x.y@yellow : NOT valid
  // x@yellow.org : VALID
  if (myLastDotAt < myAtSymbolAt) 
   {myEMailIsValid = false}

  // at least two characters [com, uk, fr, ...] must occur after the last . (dot)
  // x.y@yellow. : NOT valid
  // x.y@yellow.a : NOT valid
  // x.y@yellow.ca : VALID
  if (myLength - myLastDotAt <= 2) 
   {myEMailIsValid = false}
  
  // no empty space " " is permitted (one may trim the email)
  // x.y@yell ow.com : NOT valid
  if (mySpaceAt != -1) 
   {myEMailIsValid = false}

  return myEMailIsValid
} 
function check_form_empty(form,ilanguage) {
  var checkobj;
  var errormsg, errorcount;
  var mandatory, fieldtype;   
    
  message       = new Array();
  message[0]    = new Array();
  message[0][0] = "Ihr Formular wurde nicht vollständig ausgefüllt!\n";
  message[0][1] = "Your form was not filled out correctly!\n";
  message[1]    = new Array();
  message[1][0] = " (nur nummerische Eingabe erlaubt [z.B 3.20])\n";
  message[1][1] = " (only numeric values allowed [e.g 3.20])\n";
  message[3]    = new Array();
  message[3][0] = " (Emailadresse ist ungültig)\n";
  message[3][1] = " (email adress is not valid)\n";  
  message[2]    = new Array();
  message[2][0] = "\nDas Formular kann erst abgeschickt werden,\nwenn mindestens 1 Feld ausgefüllt ist.";
  message[2][1] = "\nIn order to submit your form, at least one field has to be filled out.";
  
  // Kopf für die Fehlermeldung  
  errormsg = message[0][ilanguage];  
  errorcount = 0;  
  
  for(n=0; n < form.elements.length; n++) {
    feldname = form.elements[n].name;    
    checkobj = form.elements[n];     
    if (checkobj.searchcheck=="false") feldname = '';
    if (check_equal_type(checkobj.type) && feldname && checkobj.type!="hidden") {
      if (!(value_is_empty(checkobj))) {
        //alert(checkobj.name+" ist nicht leer:" + checkobj.value +":");
        return false;
      }
    }
  }

// Kopf für die Fehlermeldung  
  errormsg = message[0][ilanguage];    

// Fussteil der Fehlermeldung  
   errormsg = errormsg + message[2][ilanguage];
   
  alert(errormsg);
  return true;
}
function check_form_values(form,ilanguage) {
  var checkobj;
  var errormsg, errorcount;
  var mandatory, fieldtype;   
  
  message       = new Array();
  message[0]    = new Array();
  message[0][0] = "Ihr Formular wurde nicht vollständig ausgefüllt!\nFolgende Angaben sind noch notwendig oder fehlerhaft:\n\n";
  message[0][1] = "Your form was not filled out correctly!\nThere is necessary information missing\nin the following boxes:\n\n";
  message[1]    = new Array();
  message[1][0] = " (nur nummerische Eingabe erlaubt [z.B 3.20])\n";
  message[1][1] = " (only numeric values allowed [e.g 3.20])\n";
  message[3]    = new Array();
  message[3][0] = " (Emailadresse ist ungültig)\n";
  message[3][1] = " (email adress is not valid)\n";  
  message[4]    = new Array();
  message[4][0] = " (Sonderzeichen nicht erlaubt)\n";
  message[4][1] = " (special characters are not allowed)\n";    
  message[5]    = new Array();
  message[5][0] = " (Wertebreich ungültig)\n";
  message[5][1] = " (values not allowed)\n";
  message[6]    = new Array();
  message[6][0] = " (maximale Zeichenanzahl übschritten)\n";
  message[6][1] = " (maximum length of string is reached)\n";   
  message[2]    = new Array();
  message[2][0] = "\nDas Formular kann erst abgeschickt werden,\nwenn alle entsprechenden Felder ausgefüllt sind.";
  message[2][1] = "\nIn order to submit your form, these boxes\nhave to be filled out in full.";
  
  // Kopf für die Fehlermeldung  
  errormsg = message[0][ilanguage];  
  errorcount = 0;  
  for(n=0; n < form.elements.length; n++) {
    feldname    = form.elements[n].name;
    checkobj    = form.elements[n];   
    mandatory   = false;
    for (i=0;i<checkobj.attributes.length;i++) {
       if (checkobj.attributes[i].name=="mandatory") {
         fieldtype = checkobj.attributes[i].value;
         switch (fieldtype) {
           case "true":
           case "email":
           case "numeric":
           case "special":
             mandatory=true;
             break;
           default:
             mandatory=false;
             break;
         } 
         break;
      }
    }
    //alert('check for:'+feldname+':'+mandatory);         
    if (check_equal_type(checkobj.type) && feldname && mandatory) {         
      if (value_is_empty(checkobj)) {
        errorcount = errorcount + 1;
        if (checkobj.title!="") 
          errormsg   = errormsg + errorcount + ". " + checkobj.title + "\n";
        else
          errormsg   = errormsg + errorcount + ". " + feldname + "\n";
      }
      else {
        if (fieldtype=="numeric") {
          if (isNaN(checkobj.value)) {
            errorcount = errorcount + 1;
            if (checkobj.title) 
              errormsg   = errormsg + errorcount + ". " + checkobj.title + message[1][ilanguage];
            else
              errormsg   = errormsg + errorcount + ". " + feldname + message[1][ilanguage];
          }
        }
        if (fieldtype=="email") {
          if (!(check_email(checkobj.value))) {
            errorcount = errorcount + 1;
            if (checkobj.title) 
              errormsg   = errormsg + errorcount + ". " + checkobj.title + message[3][ilanguage];
            else
              errormsg   = errormsg + errorcount + ". " + feldname + message[3][ilanguage];
          }            
        }
        if (fieldtype=="special") {
          if (!(check_specialchars(checkobj.value)))  {
            errorcount = errorcount + 1;
            if (checkobj.title) 
              errormsg   = errormsg + errorcount + ". " + checkobj.title + message[4][ilanguage];
            else
              errormsg   = errormsg + errorcount + ". " + feldname + message[4][ilanguage];
          }            
        }
      }
    }  
  }      
// Fussteil der Fehlermeldung  
   errormsg = errormsg + message[2][ilanguage];
   
// Ausgabe einer Fehlermeldung, wenn Fehler vorhanden  
  if (errorcount > 0) {
    alert(errormsg);
    return false;
  }
  return true;  
}  
