function isblank(s)
{
    for(var i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
    }
    return true;
}



function containsForbidden(s)
{
    for(var i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if ((c == ' ') || (c == '\n') || (c == '\t')) return true;
    }
    return false;
}



var reqGroups = new Array(1);
reqGroups[0] = new Object();

function verify(f)
{
    var msg;
    var empty_fields = "";
    var errors = "";


    for(var i = 0; i < f.length; i++) {
        var e = f.elements[i];

//alert(e.name + ": " + e.required);

        if (((e.type == "text") || 
             (e.type == "textarea") ||
             (e.type == "radio") ) &&
              e.required == true) {

            if (e.type == "radio") {
                var bChecked = false;
                try {
                    for (rCount = 0; rCount <f[e.name].length; rCount++ ) {
                        if (f[e.name][rCount].checked) bChecked = true; 
                    }
                } catch (e) {}
                if (!bChecked) {
                    empty_fields += "\n          " + e.name;
                    continue;
                }
            } else {
                if ((e.value == null) || (e.value == "") || isblank(e.value)) {
                    empty_fields += "\n          " + e.name;
                    continue;
                }
            }

            if (e.mail != null) {
                var firstAt = e.value.indexOf("@");
                var lastAt = e.value.lastIndexOf("@");
                var dot = e.value.length - e.value.lastIndexOf(".") - 1;
                var at =  e.value.length - e.value.lastIndexOf("@") - dot - 2;
                if ( firstAt != lastAt || 
                     dot > 3 || 
                     dot < 2 || 
                     at < 2 ||
                     e.value.indexOf("@") < 1 ||
                     containsForbidden(e.value)) {
//                    alert(e.value.indexOf("@") + " =  " + e.value.lastIndexOf("@")+"\n" + dot+"\n" + at);
                     errors += "Die E-Mail Adresse ist nicht korrekt.";
                }



            }


            if (e.numeric == true || ((e.min != null) && (e.min != "")) || ((e.max != null) && (e.max != ""))) { 
                var v = parseFloat(e.value);
                if (isNaN(v) || 
                    ((e.min != null) && (v < e.min)) || 
                    ((e.max != null) && (v > e.max))) {
                    errors += "- Das Feld " + e.name + " erwartet eine numerische Angabe";
                    if (e.min != null) 
                        errors += ": > " + e.min;
                    if (e.max != null && e.min != null) 
                        errors += " und < " + e.max;
                    else if (e.max != null)
                        errors += ": < " + e.max;
                    errors += ".\n";
                }
            }
			
        }
		
		// Für Sachkundeprüfung Formular hinzugefügt - BEGIN

		// Prüft auf numerischen Wert mittels RegExp
		if (e.isRegNumeric && e.value.length) {
			if (!e.value.match(/^[0-9]+$/)) {
				errors += "- Das Feld " + e.name + " erwartet eine numerische Angabe\n";
			}
		}
		
		// Prüft auf korrekte PLZ
		if (e.isPLZ && e.value.length) {
			if (!e.value.match(/^[0-9]{5}$/)) {
				errors += "- Das Feld " + e.name + " enthält keine gültige Postleitzahl\n";
			}
		}

		// Prüft auf korrektes Datum mittels RegExp
		if (e.isDate == true && e.value.length) {
			if (!e.value.match(/^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$/)) {
				errors += "- Das Feld " + e.name + " erwartet eine Angabe im Format tt.mm.jjjj\n";
			}
		}
		
		// Prüft auf korrekte Telefonnummer mittels RegExp
		if (e.isTelephone == true && e.value.length) {
			if (!e.value.match(/^[-0-9 ]+$/)) {
				errors += "- Das Feld " + e.name + " erwartet eine Telefonnummer\n"
			}
		}

		// Prüft ob DropDown ausgefüllt wurde
		if (e.type == "select-one" &&
		    e.required == true) {
				if (e.value == "") {
					errors += "- Im Feld " + e.name + " wurde nichts ausgewählt\n";
				}
		}
		
		// Prüft ob Checkbox angeklickt ist
		if(e.type == "checkbox" && e.required == true) {
			if (!e.checked) {
				errors += "- Das Feld " + e.name + " wurde nicht markiert\n";
			}
		}

		// Für Sachkundeprüfung Formular hinzugefügt - ENDE

		if (((e.type == "text") || 
	         (e.type == "textarea")) &&
	          !e.required) {
	            if (e.value != "" && (e.numeric == true || ((e.min != null) && (e.min != "")) || ((e.max != null) && (e.max != "")))) { 
	                var v = parseFloat(e.value);
	                if (isNaN(v) || 
	                    ((e.min != null) && (v < e.min)) || 
	                    ((e.max != null) && (v > e.max))) {
	                    errors += "- Das Feld " + e.name + " erwartet eine numerische Angabe";
	                    if (e.min != null) 
	                        errors += ": > " + e.min;
	                    if (e.max != null && e.min != null) 
	                        errors += " und < " + e.max;
	                    else if (e.max != null)
	                        errors += ": < " + e.max;
	                    errors += ".\n";
	                }
	            }
		}

		// Prüft ob aus einer Gruppe von Feldern ein Feld ausgefüllt wurde
		// Für Sachkundeprüfung Formular hinzugefügt
		if (e.onceRequired && e.onceReqGroup) {
			if (!reqGroups[0][e.onceReqGroup] || reqGroups[0][e.onceReqGroup] == "_unfilled") {
				reqGroups[0][e.onceReqGroup] = (e.value.length) ? "_filled" : "_unfilled";
			}
		}

    }
	
	for (group in reqGroups[0]) {
		if (reqGroups[0][group] == "_unfilled") {
			errors += "- Angabe mindestens einer " + group + " notwendig\n";
		} 
	}
	
	reqGroups[0] = null;
	reqGroups[0] = new Object();
	
    if (!empty_fields && !errors) return true;

    msg  = "______________________________________________________\n\n"
    msg += "Das Formular konnte nicht verschickt werden.\n";
    msg += "Bitte korrigieren Sie den/die angezeigten Fehler.\n";
    msg += "und versuchen Sie es erneut.\n";
    msg += "______________________________________________________\n\n"

    if (empty_fields) {
        msg += "- Die folgenden Pflichtfelder sind leer:" 
                + empty_fields + "\n";
        if (errors) msg += "\n";
    }
    msg += errors;
    alert(msg);
    return false;
}







function testen()
{

  if (document.forms[0].elements[1].value == '') {
      
      alert('\nDas Quellverzeichnis fehlt!');
      document.forms[0].elements[1].select();
      return false;
      }
      

  if (document.forms[0].elements[1].value != '') {

      ausdruck = document.forms[0].elements[1].value;      
      
      if((ausdruck.substr(0,1)) != "/" ){
      alert('\nDas Quellverzeichnis ist nicht korrekt!');
      return false;
      }   

      if((ausdruck.substr(1,2)) == "" ){
      alert('\nDas Quellverzeichnis ist nicht korrekt!');
      return false;
      }
  }




  if (document.forms[0].elements[2].value == '') {
      
      alert('\nDas Zielverzeichnis fehlt!');
      document.forms[0].elements[2].select();
      return false;
  }


  if (document.forms[0].elements[2].value != '') {

      ausdruck = document.forms[0].elements[2].value;

      if((ausdruck.substr(0,1)) != "/" ){
      alert('\nDas Zielverzeichnis ist nicht korrekt: ' + ausdruck + '!');
      return false;
      }

      if((ausdruck.substr(1,2)) == "" ){
      alert('\nDas Zielverzeichnis ist nicht korrekt!');
      return false;
      }
  }

}



function testen2()
{

  if (document.forms[0].elements[2].value == '') {

      alert('\nDas zu parsende Verzeichnis fehlt!');
      document.forms[0].elements[2].select();
      return false;
      }


  if (document.forms[0].elements[2].value != '') {

      ausdruck = document.forms[0].elements[2].value;

      if((ausdruck.substr(0,1)) != "/" ){
      alert('\nDas zu parsende Verzeichnis ist nicht korrekt!');
      return false;
      }

      if((ausdruck.substr(1,2)) == "" ){
      alert('\nDas zu parsende Verzeichnis ist nicht korrekt');
      return false;
      }
  }
}

