function addEvent(obj, eventType, fn){
  /* adds an eventListener for browsers which support it
     Written by Scott Andrew: nice one, Scott */
  if (obj.addEventListener){   
    obj.addEventListener(eventType, fn, false); 
    return true;
  } else if (obj.attachEvent){ 
	var r = obj.attachEvent("on"+eventType, fn);
    return r;
  } else {
	return false;
  } 
    
}


/*---------------------------------------------------------------------------*/   
// forms

addEvent(window, "load", addValidateFunc); 

function addValidateFunc() {
    
     function isMember(element, elementClassName) {
        var elementClass = element.className;
        if (!elementClass) return false;
        if (elementClass == elementClassName) return true;

        var whitespace = /\s+/;
        if (!whitespace.test(elementClass)) return false;

        var c = elementClass.split(whitespace);
        for (var i=0; i<c.length; i++) {
            if (c[i]==elementClassName) return true;
        }
        return false;
    }
     
    
    for(var i = 0; i < document.forms.length; i++) {
        var f = document.forms[i]; 

        var needsValidation = false;

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

            if (e.type != "text") continue;

            var pattern = e.getAttribute("pattern");
            var required = e.getAttribute("required") != null;

            if (required && !pattern) {
                pattern = "\\S";
                e.setAttribute("pattern", pattern);
            }

            if (pattern) {
                e.onchange = validateOnChange;
                // Remember to add an onsubmit handler to this form
                needsValidation = true;
            }
        }

        if (needsValidation) f.onsubmit = validateOnSubmit;
    }
    
    
    function validateOnChange() {
        var textfield = this;                            
        var pattern = textfield.getAttribute("pattern"); 
        var value = this.value;                          
        
        if (isMember(textfield, "invalid")) textfield.className = textfield.className.replace('invalid', '');
        
        if (isMember(textfield, "valid")) textfield.className = textfield.className.replace('valid', '');

        if (value.search(pattern) == -1) {
            textfield.className = textfield.className+" invalid";
        }
        else {
            textfield.className = textfield.className+" valid";
        }
    }
    

    function validateOnSubmit() {
        var invalid = false;
        var errorMsg = '';  

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

            if (e.type == "text" && e.onchange == validateOnChange) {
                e.onchange(); 
                if (isMember(e, "invalid")) {
                    invalid = true;
                    errorMsg = errorMsg+e.id+' / ';
                }
            }
        }

        if (invalid) {
            alert("Bitte korrigieren Sie die markierten Felder!");
            //alert("Bitte korrigieren Sie die markierten Felder:\n" + errorMsg);
            return false;
        }
    }

    
}



